GDB: показать соответствующие строки в исходном и ассемблере - PullRequest
2 голосов
/ 11 января 2020

При запуске gdb в режиме TUI с указанием источника и сборки, есть ли возможность выделить набор инструкций, отображаемых в выбранную строку источника?

1 Ответ

2 голосов
/ 12 января 2020

Вы можете частично сделать это с помощью GDB Dashboard.

https://github.com/cyrus-and/gdb-dashboard

Из скриншота ниже видно, что 1-й вызов operator<< в этой строке кода:

std::cout << a << std::endl;

сопоставлен с 4 инструкциями по сборке:

0x00000000004011a2  main()+28 mov    -0x4(%rbp),%eax
0x00000000004011a5  main()+31 mov    %eax,%esi
0x00000000004011a7  main()+33 mov    $0x404060,%edi
0x00000000004011ac  main()+38 callq  0x401070 <_ZNSolsEi@plt>

Они выделены зеленым цветом в разделе Сборка.

Вы можете перейти ко 2-му вызову operator<< в той же строке, выполнив команду ni несколько раз, и вы увидите второе отображение на 3 инструкции по сборке:

0x00000000004011b1  main()+43 mov    $0x401030,%esi
0x00000000004011b6  main()+48 mov    %rax,%rdi
0x00000000004011b9  main()+51 callq  0x401050 <_ZNSolsEPFRSoS_E@plt>

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...