使用gdb调试多进程程序的子程序

使用gdb调试多进程程序的子程序

ID:27759443

大小:441.05 KB

页数:9页

时间:2018-12-05

使用gdb调试多进程程序的子程序_第1页
使用gdb调试多进程程序的子程序_第2页
使用gdb调试多进程程序的子程序_第3页
使用gdb调试多进程程序的子程序_第4页
使用gdb调试多进程程序的子程序_第5页
资源描述:

《使用gdb调试多进程程序的子程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、GDB是limix系统上常用的c/c++调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用GDB调试呢?考虑下面这个三进程系统:进程ProdProc2Pioc3Proc2是Prod的子进程,Proc3乂是Proc2的子进程。如何使用GDB调试proc2或者proc3呢?实际上,GDB没有对多进程程序调试提供直接支特。例如,使用GDB调试某个进程,如果该进程fork了子进程,GDB会继续调试该进程,子进程会不受干扰地运行下去。如果你事先在子进程代码里设定了断点,子进程会收到SIGTRAP信号并终止。那么该如何调试子进程呢?其实我们可以利用GDB的特点或者其他一些辅助手段

2、来达到目的。此外,GDB也在较新内核上加入一些多进程调试支持。接卜来我们诈细介绍几种方法,分别是follow-fork-mode方法,attach子进程方法和GDBwrapper方法。foilow-fork-mode在2.5.60版Linux内核及以后,GDB对使用fork八fork创建子进程的程序提供丫foilow-fork-mode选项来支持多进程调试。foilow-fork-mode的用法为:setfo11ow-fork-mode[parent

3、child]•parent:fork之后继续调试父进程,子进程不受影响。•child:fork之后调试子进程,父进程不受影响。因此如果需

4、要调试子进程,在启动gdb后:(gdb)setfoilow-fork-modechild并在子进程代码设罝断点。此外还有detach-on-fork参数,指示GDB在fork之后是否断开(detach)某个进程的调试,或者都交由GDB控制:setdetach-on-fork[on

5、off]•on:断开调试follow-fork-mode指定的进程。•off:gdb将控制父进程和子进程。follow-fork-mode指定的进程将被调试,另一个进程置于暂停(suspended)状态。注意,最好使用GDB6.6或以上版本,如果你使用的是GDB6.4,就只有follow-fork-mode模

6、式。follow-fork-mode/detach-on-fork的使用还是比较簡单的,但由于其系统内核/gdb版木限制,我们只能在符合要求的系统上才能使用。而且,由于follow-fork-mode的调试必然是从父进程开始的,对于fork多次,以至于出现孙进程或曽孙进程的系统,例如上图3进程系统,调试起来并不方便。Attach子进程众所周知,GDB有附着(attach)到正在运行的进程的功能,即attach命令。因此我们可以利用该命令attach到子进程然后进行调试。例如我们要调试某个进程RIM_0racle_Agent.9i,首先得到该进程的pid[root@tivf09

7、tianq]#ps-ef

8、grepRIM_Oracle_Agent.9inobody67226721005:57?00:00:00RIMOracleAgent.9iroot754127816006:10pts/300:00:00grep-irim_oracle_agent.9i通过pstree可以看到,这是一个三进程系统,oserv是RIM0raclc_prog的父进程,RIMOrac1eprog乂是RIMOracleAgent.9i的父进程。[root@tivf09root]#pstree-H6722通过pstree察看进程-osorv**-bdtsorvico'-gatewayos

9、erv•Policyprogl、RIM_OracieproqRIH_OracleAgenRIMOracle_Aqen2*

10、RIMOra-porLnap•rpc.statd•scsieh02*[scndmail]sahd--sshd-*-bash—•wriatest-sysloqd-vsftpd•xfsxinotd-卜in.tolnotdlogine-tn.tolnetdloqlnbashp»tr«o启动GDB,attach到该进程用GDB连接进程[rootstivf09tlanq]HqdbGNUgdbRedHatLinux(6<3<0.0*1.90rh>Copyright2004Fre

11、eSoftwareFoundation,Inc»GDBisfreesoftwareFcoveredbytheGNUGeneralPublicLicense,andyouarewelcometochangeit.ind/ordistributecopiesofitundercertainconditions

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。