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

gdb 条件断点_gdb watch_gdb 条件断点 内存(4)

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

2、先用gdb <program>关联上源代码,并进行gdb,在gdb中用attach命令来挂接进程的PID。并用detach来取消挂接的进程。

暂停/恢复程序运行

—————————

调试程序中,暂停程序运行是必须的,GDB可以方便地暂停程序的运行。你可以设置程序的在哪行停住,在什么条件下停住,在收到什么信号时停往等等。以便于你查看运行时的变量,以及运行时的流程。

当进程被gdb停住时,你可以使用info program来查看程序的是否在运行,进程号,被暂停的原因。

在gdb中,我们可以有以下几种暂停方式:断点(BreakPoint)、观察点(WatchPoint)、捕捉点(CatchPoint)、信号(Signals)、线程停止(Thread Stops)。如果要恢复程序运行,可以使用c或是continue命令。

一、设置断点(BreakPoint)

我们用break命令来设置断点。正面有几点设置断点的方法:

break <function>

在进入指定函数时停住。C中可以使用class::function或function(type,type)式来指定函数名。

break <linenum>

在指定行号停住。

break offset

break -offset

在当前行号的前面或后面的offset行停住。offiset为自然数。

break filename:linenum

在源文件filename的linenum行处停住。

break filename:function

在源文件filename的function函数的入口处停住。

break *address

在程序运行的内存地址处停住。

break

break命令没有参数时,表示在下一条指令处停住。

break ... if <condition>

...可以是上述的参数,condition表示条件,在条件成立时停住。比如在循环境体中,可以设置break if i=100,表示当i为100时停住程序。

查看断点时,可使用info命令,如下所示:(注:n表示断点号)

info breakpoints [n]

info break [n]

二、设置观察点(WatchPoint)

观察点一般来观察某个表达式(变量也是一种表达式)的是否有变化了,如果有变化,马上停住程序。我们有下面的几种方法来设置观察点:

watch <expr>

为表达式(变量)expr设置一个观察点。一量表达式有变化时,马上停住程序。

rwatch <expr>

当表达式(变量)expr被读时,停住程序。

awatch <expr>

当表达式(变量)的被读或被写时,停住程序。

info watchpoints

列出当前所设置了的所有观察点。

三、设置捕捉点(CatchPoint)

你可设置捕捉点来补捉程序运行时的一些事件。如:载入共享库(动态链接库)或是C的异常。设置捕捉点的式为:

catch <event>

当event发生时,停住程序。event可以是下面的内容:

1、throw一个C抛出的异常。(throw为关键字)

2、catch一个C捕捉到的异常。(catch为关键字)

3、exec调用系统调用exec时。(exec为关键字,目前此功能只在HP-UX下有用)


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

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

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