nopass
ignore
当被调试的程序收到信号时,GDB不会让被调试程序来处理这个信号。
info signals
info handle
查看有哪些信号在被GDB检测中。
当event发生时,停住程序。event可以是下面的内容:
1、throw 一个C++抛出的异常。(throw为关键字)
2、catch 一个C++捕捉到的异常。(catch为关键字)
某些时候,用-g编译过后的执行程序中只是包括了源文件的名字,没有路径名。GDB提供了可以让你指定源文件的路径的命令,以便GDB进行搜索。
Directory dirname …
dir dirname …
加一个源文件路径到当前路径的前面。如果你要指定多个路径,UNIX下你可以使用“:”,Windows下你可以使用“;”。
directory
清除所有的自定义的源文件搜索路径信息。
show directories
显示定义了的源文件搜索路径。
(gdb) list line1,line2
要想运行准备调试的程序,可使用run(r)命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。
如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。
利用set args命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。
(gdb)set args –b –x
(gdb)show args
(gdb)backtrace(bt) //命令为堆栈提供向后跟踪功能。
(gdb)Backtrace //命令产生一张列表,包含着从最近的过程开始的所以有效过程和调用这些过程的参数。 (gdb) print p //(p为变量名) (gdb) whatis p
type = int *
print 是gdb的一个功能很强的命令,利用它可以显示被调试的语言中任何有效的表达式。表达式除了包含你程序中的变量外,还可以包含以下内容:
(gdb)print find_entry(1,0) (gdb)print *table_start
$8={e=reference=’\000’,location=0x0,next=0x0} (gdb)print $1 //($1为历史记录变量,在以后可以直接引用 $1 的值)
人为数组提供了一种去显示存储器块(数组节或动态分配的存储区)内容的方法。早期的调试程序没有很好的方法将任意的指针换成一个数组。就像对待参数一样,让我们查看内存中在变量h后面的10个整数,一个动态数组的语法如下所示:
base@length
因此,要想显示在h后面的10个元素,可以使用h@10:
(gdb)print h@10
$13=(-1,345,23,-234,0,0,0,98,345,10)
可以用来在调试的程序中设置断点,该命令有如下四种形式:
1. break line-number 使程序恰好在执行给定行之前停止。
2. break function-name 使程序恰好在进入指定的函数之前停止。
3. break line-or-function if condition 如果condition(条件)是真,程序到达指定行或函数时停止。
4. break routine-name 在指定例程的入口处设置断点
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-40594-7.html
很难
中华士魄
有什么东西能代替房地产