2017-12-03 4 views
0

동일한 텍스트 문자열을 출력하는 다음 gdb 명령을 고려하십시오. 예상대로 gdb.Value() 인스턴스를 반환 gdb.lookup_symbol()이 경우, 그것의 문자열 화 (stringification)에서 문자열에서 gdb.Value()를 반환하는 방법은 무엇입니까?

(gdb) print foo 
(gdb) python print(gdb.lookup_symbol('foo')) 

기본 gdb를 문자열 화 (stringification)에 해당합니다.

(gdb) print *&foo 

*&가 조작 불능,하지만 작동하지 않습니다 gdb.lookup_symbol('*&foo')를 사용하려고 :

는하지만 지금 다음 해당하는 경우를 고려한다. 그래서 내 질문은 파이썬에서 gdb의 명령 줄 역 참조 파서를 사용하는 것이 가능한지 여부이며, 그 대신에 gdb.Value을 얻는가?

답변

1

gdb.lookup_symbol ('* & foo')을 사용하려고하면 작동하지 않습니다. 바이너리에 *&foo라는 이름의 기호가 없기 때문이다

.

gdb의 명령 줄 역 참조 파서를 파이썬에서 사용할 수 있는지 여부를 확인한 다음 대가로 gdb.Value를 얻으시겠습니까?

귀하의 질문은 매우 명확하지 않습니다,하지만 난 당신이 parse_and_eval을 요구하고 생각 :

Function: gdb.parse_and_eval (expression) 
Parse expression, which must be a string, as an expression in the current language, 
evaluate it, and return the result as a gdb.Value. 

This function can be useful when implementing a new command (see Commands In Python), 
as it provides a way to parse the command’s argument as an expression. 
It is also useful simply to compute values, for example, it is the only way to get 
the value of a convenience variable (see Convenience Vars) as a gdb.Value. 
+0

이 참이었다 내가 찾던 정확히. :-) –