GDB调试
- GDB介绍
- 使用GDB
- 调试命令
GDB介绍
GUN Procject debugger
支持 汇编、C、C++、GO等语言
使用printf调试代码,及其低效耗时,尤其对于工程代码。GDB调试是Linux平台上最为强大的调试工具。
使用GDB
对于C程序来说,需要在编译时加上-g参数,保留调试信息,否则不能使用GDB进行调试,会出现 no debugging symbols found的信息。
Reading symbols from helloWorld...done.表明可调试。
GDB启动调试未运行的程序
1)调试启动无参程序
$ gdb hello
..................
(gdb)run
直接输入run
2)调试带参程序
run + 参数
#include<stdio.h> int main(int argc,char *argv[]) { if(1 >= argc) { printf("usage:hello name\n"); return 0; } printf("Hello World %s!\n",argv[1]); return 0 ; }
编译:
gcc -g -o hello hello.c
启动调试并设置参数
3)调试core文件
当程序core dump时,可能会产生core文件,调试core文件能很快定位问题
$ gdb 程序文件名 core文件名
GDB启动调试运行的程序
先找到进程ID
$ ps -ef|grep 进程名 或者 $ pidof 进程名
调试
gdb -p 进程ID 或者 attach 进程ID
单步启动运行 start命令
gdb -tui 文件名 图形界面调试
设置断点
为何要设置断点?
设置断点后,程序运行到断点位置就会暂停,就可以对程序进行更多的操作,比如查看变量内容,堆栈情况等等,以助调试程序
设置程序断点
b 行号
b 文件名:行号
b 函数名
查看已设置的断点
info break
删除断点
delete 1
禁用或启动断点
有些断点暂时不想使用,但又不想删除,可以暂时禁用或启用。例如:
disable #禁用所有断点
disable bnum #禁用标号为bnum的断点
enable #启用所有断点
enable bnum #启用标号为bnum的断点
enable delete bnum #启动标号为bnum的断点,并且在此之后删除该断点
GDB调试--华清直播
https://www.makeru.com.cn/live/4034_2111.html
GDB调试入门指南
https://zhuanlan.zhihu.com/p/74897601
原文地址:https://www.cnblogs.com/y4247464/p/11868121.html
- 传统数据库也能实现区块链存储
- Golang语言社区--Go语言基础第三节常量
- 干货 | 进化策略入门:最优化问题的另一种视角
- 【Golang语言社区】Golang语言面试题
- PHP面向对象核心(一)——序列化与魔术方法
- PHP面向对象核心(二)——继承、多态、接口
- PHP面向对象核心(三)——反射、异常处理
- 理解jquery的$.extend & $.fn.extend用法
- PHP数据结构(一)——顺序结构线性表
- PHP数据结构(二)——链式结构线性表
- 微信小程序防止重复点击,该如何处理?
- CSS常用实例,web前端开发者不知道这些就太low了
- PHP数据结构(三)——运用栈实现括号匹配
- python抓取头条文章
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python 技术篇-用pywin32库实现读写剪贴板
- Excel 技巧篇-在指定范围内生成指定小数位的随机数
- PyQt5 技巧篇-窗口置顶设置,如何使窗口始终显示在最前面
- 解决npm install时报错无法安装chromedriver的问题
- 解决集成jpa时无法创建entityManagerFactory的问题
- Spring船新版推出的WebFlux,是兄弟就来学我
- JDK9特性-Reactive Stream 响应式流
- Java函数式编程之Stream流编程
- 使用docker安装elasticsearch伪分布式集群以及安装ik中文分词插件
- PyQt5 技巧篇-如何让窗体只显示关闭按钮
- Gradle多项目构建与jar包发布
- Gradle初体验
- hexo初始化
- 容器部署Spring Cloud项目
- Python 爬虫篇-爬取网页中的图片,图片爬取实例演示。