2013-09-04 4 views
2

Так что у меня этот сценарий GDB команды:Как печатать только значение переменной в gdb?

$ cat gdb_commands.txt 
set pagination off 
set logging file output.txt 
set logging on 
file stuff 
b *0x80000014 
run 
echo ***DIFF THIS***\n 
echo eax: 
print $eax 
echo ebx: 
print $ebx 
echo ecx: 
print $ecx 
echo edx: 
print $edx 
echo ***DIFF THIS END***\n 
quit 

Если я запускаю его в я получаю это:

$ gdb -q -x gdb_commands.txt 
Breakpoint 1 at 0x80000014 

Breakpoint 1, 0x80000014 in _start() 
***DIFF THIS*** 
eax:$1 = 1 
ebx:$2 = 2 
ecx:$3 = 3 
edx:$4 = 4 
***DIFF THIS END*** 
A debugging session is active. 

    Inferior 1 [process 8947] will be killed. 

Quit anyway? (y or n) [answered Y; input not from terminal] 

Так есть что уродливый знак доллара вещь. Я могу sed, но я хотел бы иметь gdb для этого. Является ли это возможным?

(Причина я использовать GDB, как это потому, что мы пишем эмулятор, и хотите, чтобы проверить, если он ведет себя правильно.)

ответ

6

уродливый знак доллара вещь ... Я хотел бы иметь GDB чтобы сделать это

Вы можете управлять выводом информации GDB именно с printf командой:

(gdb) print/x $rax 
$1 = 0x7ffff7ffe2a0 

(gdb) printf "0x%lx\n", $rax 
0x7ffff7ffe2a0 
Смежные вопросы