gdb和coredump
来源:互联网 发布:喇叭主升浪指标源码 编辑:程序博客网 时间:2024/06/06 14:20
编译时加-g选项,如:
cc -g hello.c -o hello
g++ hw.cpp -g -o hw
gdb在线参考:http://sourceware.org/gdb/current/onlinedocs/gdb/
启动GDB的方法有以下几种:
1、gdb <program>
program也就是你的执行文件,一般在当前目录下。
2、gdb <program> core
用gdb同时调试一个运行程序和core文件(core dump后产生的文件)。
3、gdb <program> <PID>
如果你的程序是后台程序,那么你可以指定这个程序运行时的进程ID。gdb会自动attach上去,并调试他。
设置断点:
break 10
break test.c:10
break main
break 行号 if 条件
开始运行
start
跳转到断点
continue
c
run
r
我们也可以用watch命令来观察变量,如果变量的值发生变化,程序就会停止
watch b
删除断点
delete 行号
退出gdb
quit
查看断点信息
info b
backtrace(或bt) 查看各级函数调用及参数
finish 连续运行到当前函数返回为止,然后停下来等待命令
frame(或f) 帧编号 选择栈帧
info(或i) locals 查看当前栈帧局部变量的值
list(或l) 列出源代码,接着上次的位置往下列,每次列10行
list 行号 列出从第几行开始的源代码
list 函数名 列出某个函数的源代码
next(或n) 执行下一行语句
print(或p) 打印表达式的值,通过表达式可以修改变量的值或者调用函数
quit(或q) 退出gdb调试环境
set var 修改变量的值
start 开始执行程序,停在main函数第一行语句前面等待命令
step(或s) 执行下一行语句,如果有函数调用则进入到函数中
-------------------------------------------------------------------------------------
实际工作中cordump时必不可少的:
开:当前终端生效:
ulimit -c unlimited 来开启 core dump 功能,并且不限制 core dump 文件的大小; 如果需要限制文件的大小,将 unlimited 改成你想生成 core 文件最大的大小,注意单位为 blocks(KB)。
查:查看当前是否已经打开了此开关
通过命令:ulimit -c 如果输出为 0,则代表没有打开。如果为unlimited则已经打开了,就没必要在做打开。
取消:ulimit -c 0 就可以了
永久生效:
1.可以修改文件/etc/bash.bashrc文件,添加一行ulimit -c unlimited,然后执行命令source /etc/bash.bashrc生效。此时通过ulimit -a查看:
2.命令加入/etc/profile文件
可选:
还可以通过修改/proc/sys/kernel/core_pattern 来控制生成 core 文件保存的位置以及文件名格式。
调试:
GDB中键入bt,就会看到程序崩溃时堆栈信息(当前函数之前的所有已调用函数的列表(包括当前函数)),注意编译时的-g选项
- GDB和coredump
- gdb和coredump
- gdb coredump
- gdb coredump
- gdb和coredump等一些调试技巧
- 使用gdb分析coredump文件和远程调试
- GDB(四):gdb coredump
- GDB 看 coredump
- gdb 调试 coredump
- GDB + CoreDump 调试记录
- gdb coredump 问号
- GDB coredump调试
- GDB + CoreDump 调试记录
- GDB---coredump分析
- gdb 使用 coredump
- GDB的使用+coredump
- gdb调试coredump文件
- 使用交叉gdb 调试 coredump
- 利用Hog特征和SVM分类器进行行人检测
- 趣图:当你不知道为什么这段代码就能运行,还要加注释的时候……
- 面向对象:比较随和,愿意了解的话又会时不时有惊喜的新一面
- jsp中创建servlet工程时报错解决方案
- 2017 前端大事件和趋势回顾,2018 何去何从?
- gdb和coredump
- 把数据保存到数据库附加表 `dede_addonarticle` 时出错,请把相关信息提交给DedeCms官方。Duplicate entry ’3′ for key ‘PRIMARY’
- IBM:怎样利用深度学习、机器学习等方法提高信息处理效率
- 1077. 互评成绩计算 (20) PAT乙级真题
- node.js 命令行运行的时候传参数
- 排序四 希尔排序
- Netty,Kafka,Muduo关于时间轮的一些思考 之netty时间轮
- 虽定义轻薄本,但本本之间的差别很大
- android长连接实现