首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使gdb相对于函数的头部显示行号?

如何使gdb相对于函数的头部显示行号?
EN

Stack Overflow用户
提问于 2019-02-14 21:48:06
回答 1查看 1.1K关注 0票数 1

这是我的gdb输出。我如何使它写行号,而不是...227变成main+1,就像我拆解它时所显示的那样?

EN

回答 1

Stack Overflow用户

发布于 2019-02-14 22:31:42

由于机器指令地址和源代码行号不直接相关,所以不清楚您要问的是什么。可能适合您的需要是使用混合源/反汇编。例如:

代码语言:javascript
复制
(gdb) disassemble /m main
Dump of assembler code for function main:
5       {
   0x08048330 <+0>:    push   %ebp
   0x08048331 <+1>:    mov    %esp,%ebp
   0x08048333 <+3>:    sub    $0x8,%esp
   0x08048336 <+6>:    and    $0xfffffff0,%esp
   0x08048339 <+9>:    sub    $0x10,%esp

6         printf ("Hello.\n");
   0x0804833c <+12>:   movl   $0x8048440,(%esp)
   0x08048343 <+19>:   call   0x8048284 <puts@plt>

7         return 0;
8       }
   0x08048348 <+24>:   mov    $0x0,%eax
   0x0804834d <+29>:   leave
   0x0804834e <+30>:   ret

End of assembler dump.

这显示了机器代码反汇编之前的每一行源代码都与其关联。同时显示源行号、指令地址和偏移量。请注意,如果您应用优化,它可能是不可理解的,因为代码经常被删除或重新排序,以至于它不再与源代码顺序直接对应。

如果您想在步骤中显示当前的程序计数器地址/偏移量,那么可以使用display /i $pc命令来完成:

代码语言:javascript
复制
(gdb) display /i $pc
(gdb) run                                                                                         
Starting program: /home/a.out                                                                     

Breakpoint 2, main () at main.c:13                                                                
13          printf("Hello World");                                                                
1: x/i $pc                                                                                        
=> 0x40053a <main+4>:   mov    $0x4005d4,%edi                                                     
(gdb) step                                                                                        
__printf (format=0x4005d4 "Hello World") at printf.c:28                                           
28      printf.c: No such file or directory.                                                      
1: x/i $pc                                                                                        
=> 0x7ffff7a686b0 <__printf>:   sub    $0xd8,%rsp                                                 
(gdb)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54699578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档