社区
Linux/Unix社区
帖子详情
高分求教GDB问题
tb01412
2005-02-02 07:42:54
我现在有一个比较复杂的程序,在一台嵌入式操作系统上运行,经常会死机(不仅仅是程序死,而是系统崩了),我想用GDB来调试,有谁能告诉我怎样调?
死机是随机的,也就是说并不是程序运行在某个特定的地方死。
GDB可以跟踪系统内核进程吗?可以跟踪进系统函数吗?如何在GDB中查看汇编代码?
...全文
173
14
打赏
收藏
高分求教GDB问题
我现在有一个比较复杂的程序,在一台嵌入式操作系统上运行,经常会死机(不仅仅是程序死,而是系统崩了),我想用GDB来调试,有谁能告诉我怎样调? 死机是随机的,也就是说并不是程序运行在某个特定的地方死。 GDB可以跟踪系统内核进程吗?可以跟踪进系统函数吗?如何在GDB中查看汇编代码?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tb01412
2005-02-04
打赏
举报
回复
codedump是如何使用的?
backtrace是如何使用的?
转转耳朵
2005-02-04
打赏
举报
回复
那就用gdb跑着,等什么时候crash了,再backtrace找出错的地方好了。
yjf7888
2005-02-04
打赏
举报
回复
关注
datuhao
2005-02-04
打赏
举报
回复
不知道什么时候会崩溃的问题,用coredump是最好的方法,当然配合日志更好定位问题
想跟踪系统调用的话用strace看吧
gettext
2005-02-04
打赏
举报
回复
这种bug你不知道问题出什么地方,GDB也不好使阿。 Anyway, 祝你好运。
datuhao
2005-02-04
打赏
举报
回复
关于coredump怎么使用你可以去网上搜下,是程序运行崩溃时系统自动生成的一个映象文件,可以用gdb来调试这个文件定位错误。不过不知道你所运行的操作系统是否支持
backtrace是gdb中用来看当前堆栈的命令
tb01412
2005-02-03
打赏
举报
回复
我们这个项目代码有五六十万行,其中可能出现问题的地方太多太多了,所以只能用一种方法让系统死机的时候的出错信息记录下来,才有可能看出问题所在,但如何用GDB来记录死机时的系统信息呢?
如果用打印语句的话,我的程序太大,不可能在每个地方都设打印语句吧?或是在每个地方都记录入日志!
gettext
2005-02-03
打赏
举报
回复
“死机是随机的”,这种bug太难调。尤其是死机周期比较长。可能是内存出问题了。
如果你的系统是模块化的,就一个模块一个模块去掉,看什么地方出的问题。或者用efence查一下内存。
walkany
2005-02-03
打赏
举报
回复
让他频繁死机找到死机的规律,然后就可以找到问题原因,然后模块。
sharkhuang
2005-02-03
打赏
举报
回复
attach pid
系统调用是进不去的。
yanghuajia
2005-02-03
打赏
举报
回复
gdbserver
转转耳朵
2005-02-03
打赏
举报
回复
在gdb中查看汇编代码可以用disassemble,汇编单步用si和ni,跟进系统函数没试过,估计只能是汇编码了,除非你找到这个函数的源码。
不过比较复杂的东西我的做法是先找几个疑点,用打印的方式先把怀疑有问题的变量打出来,等范围比较小了再用gdb,不然会累死的。
嵌入式没玩过,没什么建议。
lxhong1980
2005-02-02
打赏
举报
回复
用打印日志方式调试吧
wx341944809
2005-02-02
打赏
举报
回复
GDB是什么东西?
GDB
调试 Linux C / C++
# 论 调试能力在开发程序中的重要性 调试是开发流程中一个非常重要的环境,每个程序员都应具备调试代码的能力,尤其对于从事 Linux C/C++ 开发的用户,必须具备熟练使用
GDB
调试器的能力。俗话说你有十分技能,那么其中包含了六分开发能力和四分调试能力。这套
GDB
入门视频教程能够做到深入浅出,让同学们能够快速学会使用
GDB
调试程序。#
GDB
简介 GNU symbolic debugger,简称
GDB
调试器,是 Linux 平台下最常用的一款程序调试器。
GDB
编译器通常以
gdb
命令的形式在终端(Shell)中使用,它有很多选项,这是我们要重点学习的。 发展至今,
GDB
调试器已经对 C、C++、Go、Objective-C、OpenCL、Ada 等多种编程语言提供了支持。实际场景中,
GDB
更常用来调试 C 和 C++ 程序,虽然 Linux 平台下有很多能编写 C、C++ 代码的集成开发工具(IDE),但它们调试代码的能力往往都源自
GDB
调试器。
Python Exception : No module named
gdb
问题
解决
GNU
gdb
(
GDB
) 7.12.1 使用时报错: Python Exception : No module named
gdb
问题
解决 大致报错信息如下: Python Exception <type 'exceptions.ImportError'> No module named
gdb
: warning: Could not load the Python
gdb
module from `/home/username/bin/
gdb
//python'. Limited Pytho
linux下
gdb
调试方法与技巧整理
目录一、
gdb
简介二、
gdb
使用流程1、启动
gdb
2、查看源码3、运行程序4、设置断点5、单步执行6、查看变量7、退出
gdb
三、
gdb
基本使用命令1、运行命令2、设置断点3、查看源码4、打印表达式5、查看运行信息6、分割窗口7、c
gdb
强大工具四、总结 一、
gdb
简介
GDB
是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下...
GDB
使用方法及
问题
排查
1.
GDB
基本操作 (1) 开启
GDB
调试 调试可执行文件program,一般直接在需要调试的文件目录下执行。注意,待调试的文件需要使用-g参数编译才能使用
GDB
调试。 $
gdb
program
gdb
gateway 常用操作 r(run) 开始调试,会自动跳到第一个断点,若没有断点,直到执行完代码或错误停止。 l(list) 查看当前执行代码上下文,方便调试过程中查看代码。 n(next) 单步调试,执行下一句代码,若下一句代码为函数调用,不进入函数内部执行。 s(step) 进入函数内部调试
GCC 与
GDB
版本
问题
系统:redHat系统
gdb
跟踪调试时候能够正常跟踪,但是无法打印变量状态值,提示如下: No symbol "x" in current context. 该变量在上下文中是存在的。 查找了很多材料,才发下其实是
gdb
版本与gcc版本的兼容
问题
,之前的gcc版本是4.6,后来安装了gcc5.1,但是
gdb
还是保持了老版本。 解决办法: 下载新版本的
gdb
源码(一般下载最新版本就可以...
Linux/Unix社区
23,116
社区成员
74,506
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章