내 프로그램에는 100 개의 스레드가 있으며, 대부분 유휴 상태이며 유휴 상태 일 때 매우 잘 정의 된 백 트레이스를 공유합니다. 대부분 유휴 상태가 아니므로 "공통"백 트레이스가없는 스레드에만 관심이 있습니다. 나는 gdb 스크립트를 사용하는 것이 좋은 방법이라고 생각했다.gdb 스크립트를 사용하여 백 트레이스 출력을 가지 치기
define backtraces
thread apply all bt
end
이 스크립트는 모든 백 트랙을 인쇄합니다. 이 출력을 변수에 저장하여 관련 백 트레이스 만 처리, 잘라 내기 및 표시 할 수있는 방법이 있습니까?
가 나는 순진하게도 시도 :
define backtraces
set $bts = thread apply all bt
// do whatever processing here
end
그러나 예상대로 다음과 같이 실패
없음 기호 "스레드"현재 상황에서.
더 좋은 방법이 있나요? 또는 gdb에서 스크립트의 전원을 켜는 방법에 대한 좋은 자습서가 있습니까?