2012-12-19 3 views
3

gdb 소스 코드에 새로운 명령을 추가하고 add_cmd를 사용하여이를 수행 할 수 있습니다.GDB 내부 : 가변 내용 얻기

백엔드 명령에서 몇 가지 변수의 내용을 읽고보다 관련성이 높은 형식으로 데이터를 인쇄하고 싶습니다.

나는 다음과 같은 코드를 사용하여 변수 주소를 얻을 수 있습니다 : 이것은 나에게 변수의 주소를 제공

struct symbol *sym; 

sym = lookup_symbol ("my_variable_name", get_selected_block (&context_pc), VAR_DOMAIN, NULL); 

printf_filtered ("Symbol %s is ", sym->ginfo.name); 
printf_filtered (" at address 0x%x\n", SYMBOL_VALUE(sym)); 

그러나

(gdb) my_command 
Symbol my_variable_name is at address 0x8049684 

을, 나는 API가 줄 것이다 찾을 수 없습니다입니다 이 변수의 내용. 같은 도움이 필요합니다.

답변

1

백엔드 명령에서 몇 가지 변수의 내용을 읽고보다 관련성이 높은 형식으로 데이터를 인쇄하고 싶습니다.

당신이 Python pretty-printer를 사용하여 동일한 결과를 달성 할 수 대단히 가능성이있다. 따라서 GDB를 다시 빌드 할 필요가 없으며 올바르게 작동하기 쉽고 GDB의 내부 인터페이스에 안전한 인터페이스를 제공합니다.

이 변수의 내용을 알려주는 API를 찾을 수 없습니다.

target_read_memory()은 지정된 주소의 메모리 내용을 제공하는 가장 낮은 API입니다.

+0

쿨! target_read_memory()는 훌륭하게 작동합니다! 파이썬 예쁜 프린터를 살펴볼 것입니다. – user1917289