Получение asm vars при отладке в gdb - PullRequest
0 голосов
/ 09 октября 2019

У меня есть следующая настройка в gdb, где у меня точка останова на одну строку 22:

enter image description here

Код цикла:

start_loop:                             
        movl data_items(,%edi,4), %eax  
        cmpl $0, %eax                   
        je exit_loop                    
        incl %edi                       
        cmpl %ebx, %eax                 
        jge start_loop                  
        movl %eax, %ebx                 
        jmp start_loop                  
exit_loop:      

Как бы я просмотреть все эти значения в gdb? Например, чтобы увидеть, что такое %eax, что такое %ebx, что такое %edi и что такое data_items(,%edi,4)?

1 Ответ

0 голосов
/ 09 октября 2019

Например, чтобы увидеть, что такое% eax, что такое% ebx, что такое% edi,

Как уже сказал Шут:

(gdb) info registers
(gdb) p/x $rax   # Your program appears to run on a 64-bit machine,
                 # so use $rax instead of $eax
(gdb) p/x $rbx

и что такое data_items (,% edi, 4)

Это было бы проще, если бы вы сделали (gdb) disas. Поскольку вы этого не сделали, мы не знаем, по какому адресу data_items находится. Примерно так должно работать:

(gdb) x/wx (char*)&data_items + 4 * $rdi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...