2009-09-17 2 views
1

프로그램에는 두 개의 스택이 있습니다. 하나는 OS에서 생성되고 다른 하나는 프로그램 자체에서 생성되어 일부 코드가 실행됩니다.gdb의 다중 스택 간 전환 6.3

두 번째 스택에서 프로그램이 중단되면 gdb의 주 스택으로 전환하고 백 트레이스를보고 싶습니다. 가능한가?

변수에 rsp를 저장하고 충돌 후 변경하려고 시도했지만 결과 백 트레이스가 올바르지 않습니다. 나는 gdb가 프레임을 구별 할 수 없다고 생각한다.

답변

0

두 개의 스택이있는 스레드의 경우 '정보 스레드'로 스레드를 쿼리 할 수 ​​있습니다. 보고 싶은 스레드의 스택을 알고 나면 'thread'명령을 사용하여 선택하십시오. 명령 뒤에 스레드 번호를 넣으십시오.

그런 다음 당신은 단지 프로그램은 JIT처럼 동작하고, 실행은 그 안에 프로그램을 컴파일,

+0

가 아니, 스레드가 없다 'BT'에 의해 스택을 조회해야합니다. 그래서 질문은 어떻게 런타임에 프로그램 호출 스택 내용에 대한 정보를 수집 할 수 있으며 어떻게 메인 스택을 복원하기 위해 충돌 후 GDB에 줄 수 있는지입니다. – user174916