b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

gdb 条件断点_gdb break_windows 调试工具(3)

电脑杂谈  发布时间:2017-04-10 23:05:23  来源:网络整理

p count 打印count的值

p cou1+cou2+cou3 打印表达式值

print接受一个表达式,GDB会根据当前的程序运行的数据来计算这个表达式,表达式可以是当前程序运行中的const常量、变量、函数等内容。但是GDB不能使用程序中定义的宏。

在GDB中,你可以随时查看以下三种变量的值:

1. 全局变量(所有文件可见的)

2. 静态全局变量(当前文件可见的)

3. 局部变量(当前Scope可见的)

如果你的局部变量和全局变量发生冲突(也就是重名),一般情况下是局部变量会隐藏全局变量,也就是说,如果一个全局变量和一个函数中的局部变量同名时,如果当前停止点在函数中,用print显示出的变量的值会是函数中的局部变量的值。如果此时你想查看全局变量的值时,你可以使用“::”操作符:

file::variable

function::variable

可以通过这种形式指定你所想查看的变量,是哪个文件中的或是哪个函数中的。例如,查看文件f2.c中的全局变量x的值:

p ‘f2.c’::x

当然,“::”操作符会和C++中的发生冲突,GDB能自动识别“::”是否C++的操作符,所以你不必担心在调试C++程序时会出现异常。

4. 数组变量

有时候,你需要查看一段连续的内存空间的值。比如数组的一段,或是动态分配的数据的大小。你可以使用GDB的“@”操作符,“@”的左边是第一个内存的地址的值,“@”的右边则你你想查看内存的长度。例如,你的程序中有这样的语句:

int *array = (int *) malloc (len * sizeof (int));

于是,在GDB调试过程中,你可以以如下命令显示出这个动态数组的取值:

p *array@len

@的左边是数组的首地址的值,也就是变量array所指向的内容,右边则是数据的长度,其保存在变量len中。

你可以设置一些自动显示的变量,当程序停住时,或是在你单步跟踪时,这些变量会自动显示。相关的GDB命令是display。

display expr
display/fmt expr
display/fmt addr

expr是一个表达式,fmt表示显示的格式,addr表示内存地址,当你用display设定好了一个或多个表达式后,只要你的程序被停下来,GDB会自动显示你所设置的这些表达式的值。

info display

查看display设置的自动显示的信息。

undisplay dnums…
delete display dnums…

删除自动显示,dnums意为所设置好了的自动显式的编号。如果要同时删除几个,编号可以用空格分隔,如果要删除一个范围内的编号,可以用减号表示(如:2-5)

disable display dnums…
enable display dnums…

disable和enalbe不删除自动显示的设置,而只是让其失效和恢复。

当你用GDB的print查看程序运行时的数据时,你每一个print都会被GDB记录下来。GDB会以1,2, 3…..这样的方式为你每一个print命令编上号。于是,你可以使用这个编号访问以前的表达式,如1。这个功能所带来的好处是,如果你先前输入了一个比较长的表达式,如果你还想查看这个表达式的值,你可以使用历史记录来访问,省去了重复输入。

(gdb)show values
Print the last ten values in the value history, with their item numbers. This is
like ‘p $$9’ repeated ten times, except that show values does not change the
history.

(gdb)show values n
Print ten history values centered on history item number n.

(gdb)show values +
Print ten history values just after the values last printed. If no more values are
available, show values + produces no display.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-40594-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 廪辛
      廪辛

      在进入我们防区就打

    • 苏博
      苏博

      不是6g

    • 吕帅兵
      吕帅兵

      然后苏联海军菜打出我舰奉命撞击你舰的警告之后才撞击的

    热点图片
    拼命载入中...