【转载】Linux之gdb
转载自:http://blog.chinaunix.net/uid-22312037-id-3812061.html
一、常规调试
gdb是Linux下常用的程序调试工具,当然前提是用gcc/g++编译时加上-g参数,这样编译出的可执行程序会加上gdb调试信息。
gdb命令不少,但常用的主要包括如下命令:
(1)list [file:]functuon
命令缩写是l,查看源码,不加参数时,向下显示源码,加参数-l时,向上显示源码,默认显示10行。
也可以设置在某个函数出列出源码,需要注意的是:如果是非成员函数则用file:function即可,如果是类成员函数则用class::functuon。
(2)edit [file:]function
命令缩写是e,编辑当前所在的行,也可以编辑某个函数的源码(规则同list)。
(3)break [file:]function
命令缩写是b,设置断点,可以设置在某行或某个函数处(规则同list),此外还可以直接用文件名:行号来设置断点。
(4)info
命令缩写是i,列表gdb子命令的信息,如:info break, info variables, info stack等。
(5)run [arglist]
命令缩写是r,运行程序至断点处停住,run命令之后可以加上调试程序需要的参数。
(6)next
命令缩写是n,单步调试执行语句,如果遇到函数也当一条单步语句而不进入函数,类似于VC中的F10。
(7)step
命令缩写是s,单步调试执行语句,如果遇到函数会直接进入函数内部,类似于VC中的F11。
(8)continue
名利缩写是c,继续运行程序至下一个断点。
(9)what
查看变量类型。
(10)print
命令缩写是p,打印变量的值。
(11)backtrace
命令缩写是bt,查看堆栈信息。
(12)enter
回车键,重复执行上一条调试命令。
(13)help [name]
显示指定的gdb命令的帮助信息。
(14)quit
命令缩写是q,退出gdb。
gdb调试运行程序时,用gdb .exe加载程序,gdb调试core dump时,用gdb .exe
.core加载程序,执行r命令可以开始运行程序。在gdb内编辑完代码后,不需要退出gdb,而直接在gdb里make即可,否则之前设置的断点等信息
都付之一炬了。
二、多线程调试
(1)info threads
命令缩写是info thr, 显示当前可调试的所有线程,每个线程会有一个gdb为其分配的ID,后面操作线程的时候会用这个ID,前面有*的是当前调试的线程。
(2)thread ID
命令缩写是thr,切换当前调试的线程为指定ID的线程。
(3)thread apply ID1 ID2 command
命令缩写规则同上,让一个或者多个线程执行gdb命令command。
(4)thread apply all command
命令缩写规则同上,让所有被调试线程执行gdb命令command。
(5)set scheduler-locking off|on|step
在调试多线程程序时,使用step或者continue命令调试当前线程时,其它线程也在并发执行,这个命令可以通过off|on|step来控制线程的执行,即:
off:不锁定任何线程,即所有线程都执行,这是默认值。
on:只有当前被调试程序会被执行。
step:在单步的时候,除了next过一个函数的情况以外,只有当前线程会执行。
【转载】Linux之gdb的更多相关文章
- [转载]Linux进程调度原理
[转载]Linux进程调度原理 Linux进程调度原理 Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务.调度程序会被频繁的执行,所以调度程序要尽可能的高效: 2.加强交 ...
- 一文入门Linux下gdb调试(二)
作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述 今天我们介绍一下core dump文件,Core dump叫做核心转储,它是进程运行时在突然崩溃的 ...
- 使用linux的GDB打印STL(vector,map,set..................)
在linux用gdb或者cgdb计较不爽的地方是无法打印STL的东西,所有啊去网上找了找解决方案https://www.douban.com/note/182826844/?qq-pf-to=pcqq ...
- Linux之GDB学习
Linux之GDB学习 GDB是一款优秀的调试工具,懂的人自然懂,一直以来用它都没有好好整理过使用方法,我用的也是皮毛,目前先整理一下皮毛,日后再更新 使用方法 编译C++ 从编译的角度上来说,需要在 ...
- linux中gdb的可视化调试
今天get到一个在linux下gdb调试程序的技巧和大家分享一下!平时我们利用gcc进行编程,进行程序调试时,观察程序的跳转等不是这么直观.都是入下的界面! 但是如果我们在编译连接时上加了-g命令生成 ...
- Linux知识(5)----LINUX下GDB调试
命令 解释 示例 file 加载被调试的可执行程序文件.因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径. (gdb) file gdb-sample r c Run的简 ...
- [转载]Linux下非root用户如何安装软件
[转载]Linux下非root用户如何安装软件 来源:https://tlanyan.me/work-with-linux-without-root-permission/ 这是本人遇到的实际问题,之 ...
- [转载]Linux 命令详解:./configure、make、make install 命令
[转载]Linux 命令详解:./configure.make.make install 命令 来源:https://www.cnblogs.com/tinywan/p/7230039.html 这些 ...
- [转载]Linux缓存机制
[转载]Linux缓存机制 来源:https://blog.csdn.net/weixin_38278334/article/details/96478405 linux下的缓存机制及清理buffer ...
- linux下gdb如何处理coredump错误
linux下gdb如何处理coredump错误 在编写C++程序中,我们经常会遇到一种错误,segment fault, 这种coredump错误 会导致程序运行时异常退出或者终止,这种错误没有明显错 ...
随机推荐
- php: zend server 安装及相关配置
运行安装文件(ZendServer-CE-php-5.3.2-5.0.1-Windows_x86.exe)开始安装,选项请参照我的选择. 这里不做改动,维持默认选择即可 点击Browse按钮更改安装目 ...
- android: PendingIntent的使用
PendingIntent的Flags的类型: * Flags的类型: FLAG_ONE_SHOT:得到的pi只能使用一次,第二次使用该pi时报错 FLAG_NO_CREATE: 当pi不存在时,不创 ...
- 教你如何删除WIN7系统文件以及无法删除的文件
http://jingyan.baidu.com/article/2f9b480d6d42ce41cb6cc2cc.html 我不怎么会说话,就简单明了的说吧!当我们想删除一个文件时提示无法删除,有些 ...
- 屏蔽iOS10模拟器海量的垃圾debug信息
屏蔽iOS10模拟器海量的垃圾debug信息 不屏蔽之前 进行如下设置 OS_ACTIVITY_MODE = disable 即可屏蔽垃圾信息
- Win7版IE10浏览器正式版官方下载地址
• 简体中文,Win7 SP1 32位版IE10下载: http://download.microsoft.com/download/4/1/4/4149BFB1-AC27-401D-943F-DA1 ...
- jackson 注脚学习参考
(1)初级我们从几个简单的使用场景开始:重命名属性,忽略属性,以及修改属性所使用的类型.注意:下面的例子仅仅显示了成员属性(field properties),注解同样也可以用在成员方法(getter ...
- python报错:SyntaxError: Non-ASCII character '\xe5'的解决方法
最近在学习机器学习,上面的代码都是一些python代码,对于python只是会一些基础性的东西,刚才就遇到了一个比较low的问题,但是还是记录一下吧. 在python代码中出现了中文,但是我又把# - ...
- python排序算法的实现-快速排序
1. 算法描述: 1.先从数列中取出一个数作为基准数. 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边. 3.再对左右区间重复第二步,直到各区间只有一个数. 2.pyth ...
- phpMyAdmin在Mac OS X上的配置和使用
本文主要记录phpMyAdmin在Mac OS X上的配置和使用,避免朋友们走弯路,浪费不必要的时间. 1. 下载: 2. 在"设置"中打开" web shar ...
- Microsoft.Web.RedisSessionStateProvider 运行异常问题
System.TimeoutException: Timeout performing GET MyKey, inst: 2, mgr: Inactive, queue: 6, qu: 0, qs: ...