GDB 多进程调试
启动:
$gdb <file> || $gdb 然后(gdb)file <file>
运行:
(gdb)run <该程序本身的命令行参数>
查看代码:
(gdb)list 简写为 (gdb)l
技巧(gdb)list 1,20 //查看1到20行的代码
使用断点:
建立断点
(gdb)break //可以简写为(gdb)b
(gdb)b <function> || <file>:<function> //这种是为还没有打开的源代码设置断点
(gdb)b <line> || <file>:<line> || <address> //在一个物理地址设置断点
查看断点
(gdb)info b
删除断点
(gdb)delete <breakpoint number>
(gdb)clear <line> || <file>:<line>
条件断点
(gdb)break <operator(通常是函数名)> if <op> = <value> //用于在满足某个条件时中断执行,在该operator处暂停
运行过程:
单步跟踪:
(gdb)step //缩写s
往下执行:
(gdb)next //缩写n
检查数据:
(gdb)display <varible> //例如(gdb)display stack->index
(gdb)print <varible> //缩写p <varible>
改变数据:
(gdb)set <varible>=<value> //例如set stack->index=100
检查堆栈:
(gdb)backtrace //缩写bt, 将会打印当前调用的堆栈,从深到浅
停止程序:
(gdb)quit //缩写q
多进程调试:
跟踪子进程:
(gdb)set follow-fork-mode child
跟踪父进程:
(gdb)set follow-fork-mode parent
设置gdb在fork时询问跟踪哪一个进程:
(gdb)set follow-fork-mode ask
多线程调试:
如果某一行代码被多个线程使用,可以这样设置断点:
(gdb)b pos.c:17 thread 5 //在地pos.c的17行设置断点,但只对第5个线程生效。
(gdb)info threads //查看当前应用程序中所有的线程
(gdb)b pos.c:17 thread 5 if ret > 0 //在pos.c的17行设置断点,当内部栈变量ret > 0 时中断
去指定线程:
(gdb)thread <thread number>
锁定调度器来避开gdb根据优先权来改变当前线程:
(gdb)set scheduler-locking on/off
确定当前模式
(gdb)show scheduler -locking
想所有线程应用一个命令:
(gdb)thread apply all <command(比如backtrace)>
(gdb)thread apply 1 4 9 backtrace
调试已有的进程:
$gdb
挂接指定进程 :(gdb)attach <进程号>
脱离指定进程 :(gdb)dettach
调试内核转储文件:
$test
产生一个core文件,需要设置系统环境,见我的博客文章 www.cppblog.com/TianShiDeBaiGu/articles/125785.html
$gdb test core.12345
??????????????????????????,没有尝试过的
(gdb)wacth 监控一个变量改变
(gdb)tbreak临时断点
断点禁用启用
GDB 多进程调试的更多相关文章
- GDB多进程调试(转)
http://www.cnblogs.com/ggjucheng/archive/2011/12/15/2288710.html GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强 ...
- gdb多进程调试
http://blog.csdn.net/nbabn/article/details/24984501 http://blog.csdn.net/zb872676223/article/details ...
- GDB常用调试命令以及多进程多线程调试
http://blog.csdn.net/freeelinux/article/details/53700266 一:普通命令 1.list命令 list linenum 显示程序第l ...
- gdb命令调试技巧
gdb命令调试技巧 一.信息显示1.显示gdb版本 (gdb) show version2.显示gdb版权 (gdb) show version or show warranty3.启动时不显示提示信 ...
- 第09课:GDB 实用调试技巧(下)
本节课的核心内容: 多线程下禁止线程切换 条件断点 使用 GDB 调试多进程程序 多线程下禁止线程切换 假设现在有 5 个线程,除了主线程,工作线程都是下面这样的一个函数: void thread_p ...
- gdb可以调试python的pdb么
1.如题: gdb可以调试python的pdb么? 答案:可以,实验如下. 2.实验: 生成一个a.py代码文件,代码如下: import pdb a = 1 print "111" ...
- Window平台Grmon下如何使用gdb进行调试
Window平台Grmon下如何使用gdb进行调试 1输入cmd命令,打开其窗口,进入你要执行的文件目录下 2.连接开发板,输入grmon –altjtag –u 3.连上后,输入gdb命令 4.再输 ...
- GDB代码调试与使用
GDB代码调试与使用 Linux下GDB调试代码 源代码 编译生成执行文件 gcc -g test.c -o test 使用GDB调试 启动GDB:gdb test 从第一行列出源代码:list 直接 ...
- gdb 多线程调试
gdb 多线程调试 http://hi.baidu.com/hcq11/blog/item/9f5bfc6e696209d680cb4a25.html http://hi.baidu.com/lit ...
随机推荐
- web前端设计:JQuery MINI UI
JQuery MINIUI 个人感觉用起来很爽,所以在此记录之,以后开发过程可能作为备选项.它能缩短开发时间,减少代码量,使开发者更专注于业务和服务端,轻松实现界面开发,带来绝佳的用户体验.在线下载地 ...
- CreateThread简单那多线程编程
CreateThread简单那多线程编程 作者:vpoet mail:vpoet_sir@163.com 在进行多任务处理的时候我们往往会用到多线程技术,多线程理论上是多个线程同事处理不同的工作,但是 ...
- C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\11.0
Generating Files with the TextTransform Utility \Program Files\Common Files\Microsoft Shared\TextTem ...
- 更新ORACLE数据时遇到锁死情况的处理
我们在操作数据库的 时候,有时候会由于操作不当引起数据库表被锁定,这么我们经常不知所措,不知怎么给这些表解锁,在pl/sql Developer工具的的菜单“tools”里面的“sessions”可以 ...
- 了解XSS攻击
XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原理是攻击者向有 XSS漏洞的网站中输 ...
- Android学习总结——实现Home键功能
实现Home键功能简而言之就是回到桌面,让Activity不销毁,程序后台运行. 实现方法: Intent intent= new Intent(Intent.ACTION_MAIN); intent ...
- 解决在Linux下安装Oracle时的中文乱码问题
本帖最后由 TsengYia 于 2012-2-22 17:06 编辑 解决在Linux下安装Oracle时的中文乱码问题 操作系统:Red Hat Enterprise Linux 6.1数据库:O ...
- 搭建高可用mongodb集群—— 分片
从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出 ...
- NET基础课--配置文件1
在.NET Framework中,配置几乎是无处不在的.配置是控制应用程序行为的一些设置.下面我们就来看看到底有几个配置文件,而他们又分别代表了什么? 1. machine.config 这个文件只有 ...
- winform —— 对话框和流及打印
对话框: 注意引用using System.IO; showdialog();显示对话框,返回一个dialogresult的枚举类型 colorDialog:color属性,用来获取颜色 folde ...