gdb
文章平均质量分 52
sdsszk
这个作者很懒,什么都没留下…
展开
-
实现应用层的bancktrace函数
很多平台都会进行ulibc库的裁剪,以减小库的大小,但是在程序开发的过程中,难以避免出现段错误,这时候backtrace的功能就显现出来了,可以直接打印出相关的栈调用信息,很方便的解决问题。所以需要我们自己在应用层实现bancktrace函数,代码如下:extern void * __libc_stack_end;struct backtrace_frame_t{ void * fp; void * sp; void * lr; void * pc;};int原创 2020-11-26 15:57:31 · 225 阅读 · 0 评论 -
应用层打印PC指针LR指针解决段错误总结
标题1.需求的产生写程序难免会出现段错误的情况,这时候很想知道,到底在什么地方崩溃了,对于代码很少,或者你很有把握的时候,或许用二分法配合printf就可以搞定了;而对于非常复杂的代码,比如像Xserver这样的程序,可能就不太好定位了;(本文讨论的情况都是针对arm环境,并且gdb不方便使用的情况)2. 解决思路思路其实很简单,对于用户态段错误的原因,大约可以分为两种,a) 没有权限访问这个地址;b) 访问的地址没有映射,比如NULL地址;当出现这两种原创 2020-11-18 10:35:26 · 2814 阅读 · 0 评论 -
调试段错误工具集合(readelf nm gdb objdump)
目录 gdb 调试利器 更强大的工具cgdb 分析线程栈 lsof命令查看进程打开的资源 IPC资源管理 pstack跟踪栈空间 strace分析系统调用 nm列出目标文件的符号清单 objdump readelf size查看程序内存占用 file文件类型查询 strings查询二进制文件中的文本信息 fuser显示文件使用者 ldd 查看程序依赖库 gdb 调试利器...转载 2020-11-16 16:04:31 · 579 阅读 · 0 评论 -
GDB调试相关命令解析
一、启动 1、gdb 2、调试在线进程 (1)启动gdb时链接目标进程(2)gdb中链接目标进程:(3)断开链接: 二、信息显示 1、栈信息2、变量3、寄存器4、内存5、源代码6、显示格式 三、断点 1、设置断点2、...转载 2020-10-31 22:13:22 · 1285 阅读 · 0 评论 -
解决arm启动过程中设置ulimit -c unlimited 不生效的方法
对于嵌入式Linux工程师来说,在工作中经常遇到段错误,而其中调试段错误的最好方式就是core_dump调试。core_dump调试要满足几个条件:1、ulimit -c unlimited,取消core file的大小限制;2、echo /proc/sys/kernel/core_pattern >mydir,设置生成core的目录;3、代码中取消singal相关的信号注册函数,但是很多段错误是发生在设备启动的过程中,所以这时候就需要在相关的脚本中设置在几个命令,由于环境变量的关系发现原创 2020-10-31 22:02:01 · 5875 阅读 · 2 评论 -
gdb利用core调试段错误
core dump 一般是在segmentation fault(段错误)的情况下产生的文件,需要通过ulimit来设置才会得到的。 调试的话输入: gdb filename core filename就是产生core文件的可执行文件,core就是产生的dump文件 查看栈信息————— 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程...转载 2019-01-14 09:58:09 · 527 阅读 · 0 评论