Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1746368
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: LINUX

2012-03-30 17:20:31

list命令可以查看源码。启动GDB后第一个list命令会定位到main函数,以main函数为中心显示上下共10行代码。

下一个list命令查看下面的10行。可以重复执行这个命令,直到到达文件尾。

list -查看前10行代码。

list n命令显示以第n行为中心的上下共10行代码。

list n,命令显示以第n行开头的10行代码。

list ,n显示以第n行结尾的10行代码。

list m,n显示以第m行开头,第n行结尾的代码。

list f以函数f为中心的上下10行代码。f可以是其它文件里定义的函数。

list file:line显示文件file里的第line行代码。

list file:f显示文件file里的函数f的代码。

函数名、文件名+行号/函数名也都适用于list f1,f2的格式。


通过内存地址查看源码。

用print命令打印一个函数的内存地址

(gdb) print *main
$1 = {int (int, char **)} 0x80486ff



注意:这里的地址不是调用栈的地址。

通过这个地址可以找到源码:list *0x80486ff可以列出main函数的上下10行代码。

list *0x8048711(main函数地址之后的一些偏移)可以列出main函数里的某行代码。


set listsize n可以设置每次显示的行数。


在源码之间移动

step命令一次执行一行。如果当前行是一个函数,step会进入这个函数。

next命令也是一次执行一行。但如果当前行是一个函数,它会略过这个函数。

where命令可以知道自己当前在源码的哪一行。

gdb> where
#0  main () at ptype_struct.c:14
阅读(7150) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~