linux运行崩溃怎么定位,Linux 程序崩溃定位
栈帧信息
(gdb) info frame
Stack level 0, frame at 0x7ffc286552a0:
rip = 0x55943b2bb8c4 in foo; saved rip = 0x55943b2bb9e9
called by frame at 0x7ffc28655300
Arglist at 0x7ffc28655290, args:
Locals at 0x7ffc28655290, Previous frame's sp is 0x7ffc286552a0
Saved registers:
rbp at 0x7ffc28655290, rip at 0x7ffc28655298
进程maps 信息
/proc/11742/maps
---
55943b2bb000-55943b2bc000 r-xp 00000000 08:0a 5772372 /home/xxx/tests/c/gdb/a.out
55943b4bb000-55943b4bc000 r--p 00000000 08:0a 5772372 /home/xxx/tests/c/gdb/a.out
55943b4bc000-55943b4bd000 rw-p 00001000 08:0a 5772372 /home/xxx/tests/c/gdb/a.out
55943b9a8000-55943b9c9000 rw-p 00000000 00:00 0 [heap]
7f4e8b87a000-7f4e8ba50000 r-xp 00000000 08:09 523649 /lib/x86_64-linux-gnu/libc-2.26.so
7f4e8ba50000-7f4e8bc50000 ---p 001d6000 08:09 523649 /lib/x86_64-linux-gnu/libc-2.26.so
7f4e8bc50000-7f4e8bc54000 r--p 001d6000 08:09 523649 /lib/x86_64-linux-gnu/libc-2.26.so
7f4e8bc54000-7f4e8bc56000 rw-p 001da000 08:09 523649 /lib/x86_64-linux-gnu/libc-2.26.so
7f4e8bc56000-7f4e8bc5a000 rw-p 00000000 00:00 0
7f4e8bc5a000-7f4e8bc81000 r-xp 00000000 08:09 523292 /lib/x86_64-linux-gnu/ld-2.26.so
7f4e8be51000-7f4e8be54000 rw-p 00000000 00:00 0
7f4e8be7e000-7f4e8be81000 rw-p 00000000 00:00 0
7f4e8be81000-7f4e8be82000 r--p 00027000 08:09 523292 /lib/x86_64-linux-gnu/ld-2.26.so
7f4e8be82000-7f4e8be83000 rw-p 00028000 08:09 523292 /lib/x86_64-linux-gnu/ld-2.26.so
7f4e8be83000-7f4e8be84000 rw-p 00000000 00:00 0
7ffc28637000-7ffc28658000 rw-p 00000000 00:00 0 [stack]
7ffc286aa000-7ffc286ad000 r--p 00000000 00:00 0 [vvar]
7ffc286ad000-7ffc286af000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
计算
rip 指向a.out 的 .text 段 r-xp
rip - a.out .text 段基址 = 0x55943b2bb8c4 - 0x55943b2bb000 = 0x8c4
objdump
objdump -ds a.out > a.txt
00000000000008a0 :
8a0: 55 push %rbp
8a1: 48 89 e5 mov %rsp,%rbp
8a4: 5d pop %rbp
8a5: e9 66 ff ff ff jmpq 810
00000000000008aa :
8aa: 55 push %rbp
8ab: 48 89 e5 mov %rsp,%rbp
8ae: 48 89 7d e8 mov %rdi,-0x18(%rbp)
8b2: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%rbp)
8b9: c7 45 fc 03 00 00 00 movl $0x3,-0x4(%rbp)
8c0: 48 8b 45 e8 mov -0x18(%rbp),%rax
8c4: 8b 00 mov (%rax),%eax
8c6: 89 45 fc mov %eax,-0x4(%rbp)
8c9: 90 nop
8ca: 5d pop %rbp
8cb: c3 retq
00000000000008cc :
8cc: 55 push %rbp
8cd: 48 89 e5 mov %rsp,%rbp
8d0: 48 83 ec 50 sub $0x50,%rsp
...
a.c 的内容:
void foo(int *p)
{
int a = 0;
a = 1 + 2;
a = *p;
}
int main()
{
...
foo(0);
...
}
定位
0x8c4 即foo函数中 mov (%rax),%eax 对应的a = *p; 一句。完成!
linux运行崩溃怎么定位,Linux 程序崩溃定位相关推荐
- 如何定位Release程序崩溃原因
[转]如何定位Release程序崩溃原因 Posted on 2011-08-19 10:44 单鱼游弋 阅读(2162) 评论(1) 编辑 收藏 1 案例描述 作为Windows程序员, ...
- 在Linux中利用backtrace信息解决程序崩溃问题
转自:https://blog.csdn.net/jxgz_leo/article/details/53458366 一.导读 在程序调试过程中如果遇到程序崩溃死机的情况下我们通常多是通过出问题时的栈 ...
- linux 运行go文件路径,go程序部署到linux上运行-Go语言中文社区
go 语言版本:go1.9.2 开发环境:win10 部署环境:ubuntu 14.04.6 一.win10上的操作 1.在src目录下依次执行set CGO_ENABLED=0.set GOOS=l ...
- 嵌入式linux运行dosbox,Ubuntu18.04/Linux下安装DosBox进行8086汇编
在windowsXP等32位系统会自带有debug等汇编调试工具,但是到之后的win7等64位系统之后移除了这个功能,其他系统诸如linux,Mac OS等等则没有,学习汇编,需要用到一些工具及软件, ...
- linux运行dll文件命令,linux下的动态链接库(DLL)
一.公约 1. 库的命名习惯 一个linux DLL 有三个不同名字的文件组成 soname 文件 lib + 链接库名字 + .so + .版本号 每当链接库接口改变时都递增版本号.soname 文 ...
- linux运行前探秘之四,Linux运行前探秘之四_内核解压缩_三_
操作系统 PROGRAMLANGUAGE 编程语言 Linux运行前探秘之四 ---内核解压缩(三) 徐 炜 摘要:分析了Linux内核解压过程和算法,并分析了关键的源代码. 关键词:inflate: ...
- java 崩溃日志_Android收集程序崩溃日志的方法
安卓Android如何手机程序崩溃日志并上传到服务器呢?直接会用到Thread线程里面的UncaughtExceptionHandler接口方法,我们可以自定义一个类CrashHandler,代码如下 ...
- Linux运行hadoop命令,将hadoop程序打成jar包,在linux下以命令行方式运行(例如单词计算程序)...
自定义Mapper import java.io.IOException; import org.apache.hadoop.io.LongWritable; import org.apache.ha ...
- 【java基础知识】linux运行或停止jar包程序
---通过命令行直接运行 运行命令: java -jar xxxx.jar 停止: Ctrl+C 按键停止 ---通过后台运行 运行命令: nohup java -jar xxx.jar >c ...
- linux运行apktool签名,解决Linux中使用ApkTool遇到问题
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 遇到问题 在Linux中使用IntelliDroid工具时,按要求配置好环境之后,始终无法成功运行该工具内部的ApkTo ...
最新文章
- java.awt.headless 模式(Linux, java.awt.headless and the DISPLAY environment variable)
- UNIX文件结构(转自UNIX/AIX操作系统基础教程)
- 一文读懂层次聚类(Python代码)
- word椭圆形标注怎么设置_轻松应对毕业季,搞定论文图表,word中处理原来没你想象的那么难...
- android自定义游戏闯关图,Android自定义View(四) -- Canvas
- java注解:@Deprecated(不建议使用的,废弃的);@SuppressWarnings(忽略警告,达到抑制编译器产生警告的目的)
- gitlab访问错误Whoops, GitLab is taking too much time to respond
- switch用法和原理
- 【LKJ】LKJ2000型记录装置显示界面说明
- SQL Server 2008 R2 卸载教程
- MS-TS:免费微软TTS语音合成工具(一键合成导出MP3音频)
- HTML5基础标签学习
- 针对win10激活出现的一系列问题解决方法
- 社会生活中的十二条著名法则
- 微信小程序—半圆(弧形)进度条
- 微信公众号 - Java推送公众号模板消息给用户
- Linux驱动学习-平台设备驱动probe函数-20220410
- 京东文件存储服务器,紫晶存储智能家庭云服务器登录中国移动和彩云 首个京东官方旗舰店助力消费者业务...
- Jmeter简单操作
- 【java】莱布尼兹公式求解pi值