2012-06-03 9 views
3

우선, 디버거를 사용할 수 없습니다 [1]. 그러나 프로그램의 프로그램 카운터에 액세스 할 수 있으며 필요한 모든 플래그로 이진 파일 (C로 작성)을 컴파일 할 수도 있습니다. 코드를 변경할 수도 있습니다 (선호하지는 않지만). 주어진 PC를 통해 어떤 라인이 해당하는지 알 수 있기를 원합니다.프로그램 카운터에서만 코드 라인 정보를 얻으시겠습니까?

나는이를 위해 자동화 된 실용적인 빠른 방법이 있어야한다고 확신합니다. 그러나 나는 성공하지 못했습니다.

편집 : 잊어 버린 부분 : Linux 시스템, 바이너리는 PPC, 호스트는 i386입니다. PPC 하드웨어에 액세스 할 수 있습니다.

[1] 응용 프로그램이 에뮬레이트되고 있으며, 크로스 컴파일되어 있습니다. 호스트 에뮬레이터에 gdb가 있습니다. 하지만 에뮬레이트 된 게스트 응용 프로그램에 gdb 서버를 연결할 수 없습니다. 그리고 실제 하드웨어는 옵션이 아닙니다. 에뮬레이터를 기반으로 시뮬레이터를 구축하려고합니다.

+1

바이너리가 디버깅 정보로 컴파일 된 경우 디버그 정보가 포함 된 ELF 섹션을 통해 PC를 사용하여 소스에서 올바른 위치를 찾을 수 있습니다. 자동화 된, 빠르고 실용적인 용어는 프로세스에 대한 마음이 봄 아니지만! –

+0

@JonathanLeffler 왜 그렇게 대답하지 않습니까? – Matt

답변

2

바이너리가 디버깅 정보로 컴파일 된 경우 디버그 정보가 포함 된 ELF 섹션을 통해 PC를 사용하여 소스에서 올바른 위치를 찾을 수 있습니다. 자동화 된, 빠르고 실용적인 용어는 프로세스에 대한 마음이 봄 아니지만!

+0

심볼을 얻고 초기 정보를 얻는 데 대한 objdump 또는 readelf가 괜찮다고 생각합니다. 올바른 위치를 찾을 수 있다고 말했을 때입니다. 그리고 지금은 BinTools (파이썬 라이브러리)를 통해 자동 화되고 실용적이며 더 맞춤화 된 것을 만들려고합니다. – MariusSiuram