GDB快速入门
GDB快速入门
GDB(GNU DeBugger)是Linux下强大的C/C++调试器,纯命令行操作
启动
以下为测试代码
#include <stdio.h>
int nGlobalVar = 0;
int tempFunction(int a, int b)
{
printf("tempFunction is called, a = %d, b = %d\n", a, b);
return (a + b);
}
int main()
{
int n;
n = 1;
n++;
n--;
nGlobalVar += 100;
nGlobalVar -= 12;
printf("n = %d, nGlobalVar = %d\n", n, nGlobalVar);
n = tempFunction(1, 2);
printf("n = %d", n);
return 0;
}
启动调试
$gcc -g hello.c -o hello #-g表示生成符号表和调试信息等
$gdb -q hello #-q表示禁止显示介绍信息和版权
常用指令
- file hello:要装入调试的可执行文件
- cd dir:改变工作目录
- pwd:返回当前目录
- run:执行正在被调试的程序
- kill:停止当前正在调试的程序
- list:列出正在调试的应用程序源码
- break 行号:在某一行设置断点
- tbreak:temporary breakpoints只运行一次的断点
- watch var:监控变量
- next:step over
- step:step into
- display var:每一次运行都会显示变量
- undisplay varNum:删除display的变量
- print expr:显示一次表达式的值
- delete breakNum:删除指定断点,如果不加参数就删除所有
- shell cmd:执行Linux shell命令
- make:不退出gdb重新编译
- quit:退出gdb
- info breakpoints:查看断点
- info func:显示所有函数名
- info local:显示当前函数的所有局部变量
- help:查看帮助
- continue:进入下一个断点
其他当然还有很多细节,即用即查
GDB快速入门的更多相关文章
- linux gdb快速入门教程
文章目录 前言 常用指令概览 开始使用gdb 一个完整流程一般所需步骤 1 加载程序 2 查看 2.1 查看函数 3 设置断点 3.1 根据函数名设置断点 3.2 根据程序位置(第几行) 4 运行程序 ...
- Modelbuilder快速入门
Modelbuilder快速入门 by 李远祥 什么是modelbuilder 模型构建器是一个用来创建.编辑和管理模型的应用程序.模型是将一系列地理处理工具串联在一起的工作流,它将其中一个工具的输出 ...
- Emacs快速入门
Emacs 快速入门 Emacs 启动: 直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本, 就用 emacs -nw (No windows)起动. 符号说明 C-X ...
- Qt快速入门学习笔记(基础篇)
本文基于Qter开源社区论坛版主yafeilinux编写的<Qt快速入门系列教程目录>,网址:http://bbs.qter.org/forum.php?mod=viewthread&am ...
- NOI Linux 快速入门指南
目录 关于安装 NOI Linux 系统配置 网络 输入法 编辑器 1. gedit 打开 配置 外观展示 2. vim 打开 配置 使用 makefile 编译运行 1. 编写 makefile 2 ...
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
随机推荐
- GreenDao3.2的简单使用
Android -- GreenDao3.2的简单使用http://www.cnblogs.com/wjtaigwh/p/6394288.html https://github.com/greenro ...
- C#使用Emit构造拦截器动态代理类
在AOP编程概念介绍中,常见的示例为拦截对象,并在对象的某方法执行前和执行后分别记录日志. 而最常用的拦截方式是使用动态代理类,用其封装一个日志拦截器,当方法被执行时进行日志记录. 日志拦截器类 1 ...
- ElementLayer support not implemented for native rendering. Layer ID:
在 arcgis runtime for wpf 添加标注闪烁动画时(实现方法参考:http://blog.csdn.net/arcgisserver_book/article/details/805 ...
- RocketMQ事务消息回查设计方案
用户U1从A银行系统转账给B银行系统的用户U2的处理过程如下:第一步:A银行系统生成一条转账消息,以事务消息的方式写入RocketMQ,此时B银行系统不可见这条消息(Prepare阶段) 第二步:写入 ...
- 查看name的状态,是属于active还是standby
sudo -E -u hadoop /home/hadoop/bin/hdfs haadmin -getServiceState nn1 sudo -E -u hadoop /home/hadoop/ ...
- docker保存、载入、导出、导入
保存和载入 拿到CONTAINER ID docker ps -a 通过容器id生成镜像dockerlinuxdemoweb:update docker commit b33633d12871 doc ...
- JavaSE| 包装类| 时间
包装类 * 因为Java是面向对象的语言,所以很多API或新特性都是针对“对象”来设计的,但是Java设计之初时,是C语言很盛行的时候,所以Java保留了C语言中的8种基本数据类型, 保留它们有好处, ...
- java定时任务以及Spring使用Quartz调度器执行定时任务
java下的java.util.Timer中类可以实现定时执行任务的执行: 如:让任务立即执行,每隔1s循环执行一次 public class TimerClass { public static v ...
- sql的连接查询
http://www.cnblogs.com/LeoTerry/archive/2010/03/26/1696988.html
- 为表格动态添加一行,miniui组件无效
想要使用miniui实现这样的功能,点击按钮,在一个<td>中动态添加一个miniui输入框和一个按钮,结果miniui的样式无法渲染,请问这种问题可以怎么解决代码如下: <tr&g ...