Вы можете частично сделать это с помощью 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>