사용자가 공유한 콘텐츠
-
파이썬 스크립트 기반으로 실행 중인 커널을 디버깅할 수 있는 drgn을 소개해 드립니다.
Facebook에서 근무하는 Sandoval은 커널 디버깅을 위한 기존 도구가 부족하다는 사실을 발견하고 Python 라이브러리를 이용하여 디버깅을 위한 drgn을 개발하였습니다. 기존에 커널을 디버깅하기 위해서 GDB, Crash, BPF, BCC 등을 사용하였는데,
GDB 는 스크립트를 위한 인터페이스가 존재하지만 투박하고 기존 GDB 명령 이상의 것을 하기에는 불편함이 있음
Crash 기본 커널에 대한 디버깅 이외에 그를 통한 응용을 하기에는 부족함이 존재, 또한 많은 상태를 덤프한 후에 그것을 후처리 해야할 수 있음
BPF & BCC 는 실시간 디버깅에 대해서는 훌룡하지만, 코어 덤프 등을 통해서 이전에 발생한 버그를 재현하고 추적하기에는 부족함
등의 이유로 drgn 을 만들었다고 합니다.
drgn("드래곤"으로 발음)은 프로그래밍 가능성에 중점을 둔 디버거입니다.
아래의 예시처럼 이미 만들어진 헬퍼의 list_for_each_entry 를 스크립트를 사용할 수 있습니다.
>>>from drgn.helpers.linux import list_for_each_entry
>>>for mod in list_for_each_entry('struct module',
prog['modules'].address_of_(),
'list'):
if mod.refcnt.counter > 10:
print(mod.name)
...
(char [56])"snd"
(char [56])"evdev"
(char [56])"i915"
사용자가 직접 스크립트를 작성할 수도 있습니다.
>>>def load_avg(avenrun):
fixed_1=1<<11
add=int(fixed_1/200)
a=avenrun[0]+add
b=avenrun[1]+add
c=avenrun[2]+add
str='{:0.2f} , {:0.2f} , {:0.2f}'.format(float(load(a)), float(load(b)), float(load(c)))
return str
>>>load_avg(prog['avenrun'])
```
복잡하고 상호 연결된 프로세스들의 상태를 검사하는데 유용할 수 있습니다. 사용 방법은 기본적으로
$ sudo drgn
으로 실행 중인 커널을 디버깅할 수 있으며,
$ sudo drgn -p $PID
를 통하여 실행 중인 프로세스를 디버깅할 수도 있습니다. 또한 코어 덤프를 디버깅하려면,
$ drgn -c $PATH
를 실행하면 됩니다.
이렇게 파이썬 스크립트를 통해서 개체를 소스 코드에서 사용하듯이 사용할 수 있는데, 예를 들어, 구조체 멤버는 점(.) 연산자로 액세스할 수 있고, 배열은 []로 첨자를 붙일 수 있으며, 산술을 수행할 수 있고, 객체를 비교할 수 있습니다.
>>>print(prog['init_task'].comm[0])
(char)115
>>>print(repr(prog['init_task'].nsproxy.mnt_ns.mounts + 1))
Object(prog, 'unsigned int', value=34)
>>>prog['init_task'].nsproxy.mnt_ns.pending_mounts > 0
False
https://drgn.readthedocs.io/en/latest/
다음 내용이 궁금하다면?
이미 회원이신가요?
2023년 12월 28일 오전 3:27
이젠 Claude 모델이 그렇게 압도적으로 좋은 건 아닌데, Claude Code는 진짜 분명하게 좋음. 아마도 프롬프트가 잘 되어 있어서 그런 것 같음. Claude의 다른 프롬프트들은 공개해뒀는데 Claude Code용 프롬프트는 공개를 안해줌. 역시 아무리 투명하게 공개한다고 해도 진짜 좋은 건 다 기업비밀임..
1. '바쁘다'는 건 열심히 많은 일을 하고 있다는 뜻이다.
“이 문제는 왜 해결해야 하죠?” 토스페이먼츠의 Product Manager는 늘 이 질문에서 시작합니다. 화면을 기획하거나, 기능을 정리하는 일보다 먼저 우리는 문제의 본질을 정의하고 싶은 사람들입니다. 그렇다면 ‘문제의 본질’부터 고민하는 토스페이먼츠의 PM은 실제로 어떤 방식으로 일하고 있을까요? 토스페이먼츠 PM 김명훈님의 이야기를 함께 들어보세요.