gdb (스크립트 내)에 백 트레이스를 만들고 싶습니다. bt 2
명령은 가장 안쪽에있는 프레임 2 개만 인쇄하고 bt -2
은 가장 바깥 쪽 프레임 2 개만 인쇄합니다.백 트레이스의 가장 안쪽 프레임 건너 뛰기
내가하고 싶은 것은 입니다. 두 개의 가장 안쪽 프레임을 건너 뛰고 모든 외부 프레임을 보여줍니다. 나는
up 2
bt
(유사 up-silently
, frame
, select-frame
)를 시도했습니다,하지만 bt
의 출력에는 영향을 미치지 않는다. 명확하게 말하자면이 출력에서 첫 줄부터 제거하고 싶습니다.
#0 0x0000003167e0f33e in waitpid() from /lib64/libpthread.so.0
#1 0x00007f2779835de8 in print_trace()() at /path/to/MyAnalysis.cxx:385
#2 0x00007f2779836ec9 in MyAnalysis::getHistHolder(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)() at /path/to/MyAnalysis.cxx:409
#3 0x00007f27798374aa in MyAnalysis::execute()() at /path/to/MyAnalysis.cxx:599
#4 0x00007f2783a9670f in EL::Worker::algsExecute()() from /blah/lib/libEventLoop.so
...
어떤 방법 으로든이 작업을 수행 할 수 있습니까?
return
을 두 번 호출하면 작동하지만 응용 프로그램이 잘못된 상태로 남아 있기 때문에 사용할 수 없습니다.
downvoters가이 질문에 무엇이 잘못되었는지 설명해 주시겠습니까? – jdm
자신의 필터를 쓰는 것이 옵션일까요? https://sourceware.org/gdb/onlinedocs/gdb/Writing-a-Frame-Filter.html –
@ MarcusMüller 링크를 제공해 주셔서 감사합니다. 그것은 선택 일 것이다. 그러나 그러한 외관상의 문제는 아마도 과잉이다. (현재 gdb를 호출 할 때 파이썬 스크립트 자동 로딩 기능을 사용하지 않기 때문에 약간의 작업이 필요할 것입니다.) 현재 프레임을 설정하는 간단한 방법이없는 것 같습니다. – jdm