首页 > 编程知识 正文

python pdb调试,coredump文件位置

时间:2023-05-06 08:09:24 阅读:37577 作者:3127

% E4 % BD % 9c % E4 % b8 % ba % E5 % B7 % a5 % E4 % BD % 9c % E5 % 87 % A0 % E5 % B4 % b8 % 81 % E7 % 25 % 20b0core de e9 % ab % 20a0% E6 % B3 % E5 % 88 % E6 % 9e9% e9 % 97 % ae9 % a2 % E6 % 89 % 80 % E5 % A8 % E3 % 80 % 82 % 209 % 99 % E7 % B4 % a2 % E5 % B0 % B1 % E6 % 98 % af % E8 % BF % 99 % E4 % b8 % aa % E7 % A8 % E5 % ba % E7 % 25 % 207 % E4 E7 % af % 87 % E6 % 96 % E7 % ab % A0 % ef % BC % 8c % E6 % 88 % E4 % bb % AC % E7 % a5 % 25 % 2095 % E4 % BC % A0 % e9 % E5 % BD % 93 % E7 % 84 % B6 % E4 % ba % 86 % E8 % BF % 98 % E6 % 9c % 89 att % E7 % 84 % E6 % B1 % 25 % 20 % E7 % bb % 8f % E5 % 85 % B6 % E5 % ae9 % ef % BC % 8c % E5 % be % 88 % E5 % a4 % E8 % B0 % 83 % E8 % E8 % BF % 98 % E8 % E8 % 203 25 % 20 % E5 % be % 97 % E4 % b8 % 8d % E6 % 89 % BF % E8 % AE % a4 % ef % BC % 8c % e9 % E7 % 9d % 80 % E8 % B0 % 83 % ef B6 % 25 % 20c % 8c % E6 % 88 % 91 % E4 % bb % AC % e9 % 80 % E8 % a6 % b8 % E6 % ad % E7 % af % E7 % B4 % af % 20e % % 20 E4 % ba % 9b % E8 % BF % 98 % E4 % b8 % E8 % a6 % 81 % E6 % 93 % 8d % E4 % BD % 9c % E7 % bb % E7 % bb % 96 % E7 % E7 % E7 % 20 % a7 % E5 % ae6 % E6 % 95 % AC % E8 % af % B7 % E6 % 9c % E5 % be8 % E6 % a5 % E4 % b8 % E6 % E6 % 9d % a5 % 25 % 2005 25992 % E6 % 89 % 93 % E5 % BC % 80 % E8 % BF % 99 % E4 % b8 % aa core % 0a % 20 % E7 % 9c % 8b % E4 % b8 % E4 % b8 % 25 % 20 n % 20 _ _ do _ global _ dtors _ % 200 memory % 20at % 20 address % 200 x 303938373635343 b % 0a % 20 % E5 % 87 % ba % e9 % 94 2 % ab % E7 % A0 % B4 % E5 % 8d % E4 % ba % 86 % ef % BC % 8c % 25 % 20e5% ad % 98 % E5 % A8 % E5 % 92 % 8cb p % E6 % 98 % 200 x 332312 c 21646 c 72 % 203689065110378409074 % 0a % 200 x0 % 200 a % 2000 % 200737488347225 % 0a % 200 RBP % 200 200 x7 fffffffe 060 % 200 x7 fffffffffe 060 % 25 % 20740 % 0a % 20r9% 200 x7 ffff7DC 3680 % 20140737351792256 % 0a % 20 r10 % 200 xffffff 330 % 20536 % 0a % 20r 13 % 200 x7 ffffffffe 180 % 20140737488347520 % 0a % 20r 14 % 200 x0 % 200 r15 % 200 x0 % 200 % 00a % 2000 00x 33 % 2051 % 0a % 20ss % 200 x2b % 2043 % 0a % 200 ds % 200 x0 % 25 % 200 f ctrl % 200 x37f % 20895 % 0a % 20 fstat % 200 x0 % 200 a 00 % 0a % 20 fop % 200 x0 % 200 a % 20mx CSR % 200 x1f 80 % 20 % 5b % 20im % 20um % 20pm % 20d % 20a % 20 % 20x 3360 %

_do_global_dtors_aux>: leaveq

0x400713 <__do_global_dtors_aux>: retq

0x400714 <__do_global_dtors_aux>: nopw %cs:0x0(%rax,%rax,1)

0x400720 : push %rbp

0x400721 : cmpq $0x0,0x2006df(%rip) # 0x600e08 <__jcr_list__>

0x400729 : mov %rsp,%rbp

0x40072c : je 0x400748

0x40072e : mov $0x0,%eax

0x400733 : test %rax,%rax

0x400736 : je 0x400748

0x400738 : mov $0x600e08,%edi

0x40073d : mov %rax,%r11

0x400740 : leaveq

rbp的值很奇怪,基本确定栈被破坏了(bt不正常,也应该看一下栈是否出问题了)。打印一下栈的内容,看是否栈被写坏了:

(gdb) x/30c $rsp-20

0x7fffffffe04c: 33 '!' 44 ',' 49 '1' 50 '2' 51 '3' 52 '4' 53 '5' 54 '6'

0x7fffffffe054: 55 '7' 56 '8' 57 '9' 48 '0' 0 '00' 7 'a' 64 '@' 0 '00'

0x7fffffffe05c: 0 '00' 0 '00' 0 '00' 0 '00' 0 '00' 0 '00' 0 '00' 0 '00'

0x7fffffffe064: 0 '00' 0 '00' 0 '00' 0 '00' -21 '353' 5 '05'

我们看到了特殊的字符!,1234567890。当然实际的生产环境可能不会这么简单,比如笔者曾经遇到过这个字符串是/local/share/tracker_...这种目录的字符串,后来发现拼接路径的时候出现错误导致路径非常长,在路径拷贝的时候出现了写坏栈的情况。

多打印一下栈的内容:

(gdb) x/40c $rsp-40

0x7fffffffe038: -100 '234' 7 'a' 64 '@' 0 '00' 1 '01' 0 '00' 0 '00' 0 '00'

0x7fffffffe040: 72 'H' 101 'e' 108 'l' 108 'l' 111 'o' 44 ',' 32 ' ' 119 'w'

0x7fffffffe048: 111 'o' 114 'r' 108 'l' 100 'd' 33 '!' 44 ',' 49 '1' 50 '2'

0x7fffffffe050: 51 '3' 52 '4' 53 '5' 54 '6' 55 '7' 56 '8' 57 '9' 48 '0'

0x7fffffffe058: 0 '00' 7 'a' 64 '@' 0 '00' 0 '00' 0 '00' 0 '00' 0 '00'

可以看出,字符串"Hello, World!,1234567890"这个字符串溢出导致栈被破坏。

我们不应该用rbp打印吗?

还记得在函数返回时,rbp会恢复为上一层调用者的bp吗?因为字符串溢出/越界,导致已经恢复不了原来的bp了。

这个bug很简单。实际上,有的coredump就是这种无心的错误啊。

尊重原创,转载请注明出处: anzhsoft  http://blog.csdn.net/anzhsoft/article/details/18762915

2018-2019-1 20189221《Linux内核原理与分析》第五周作业

2018-2019-1 20189221第五周作业 实验四 实验过程 当用户态进程调用一个系统调用时,cpu切换到内核态并开始执行一个内核函数. 在Linux中 ...

2019-2020-1 20199329《Linux内核原理与分析》第五周作业

第五周作业 一.上周问题总结: 虚拟机将c文件汇编成汇编文件时忘记添加include gdb跟踪汇编过程不熟练 二.本周学习内容: ...

20169212《Linux内核原理与分析》课程总结

20169212课程总结 每周作业链接汇总 第一周作业:完成linux基础入门实验,了解一些基础的命令操作. 第二周作业:学习MOOC课程--计算机是如何工作的 ...

Linux Debugging(三)&colon; C&plus;&plus;函数调用的参数传递方法总结(通过gdb&plus;反汇编)

上一篇文章没想到能得到那么多人的喜爱,因为那篇文章是以32位的C++普通函数(非类成员函数)为例子写的,因此只是一个特 ...

Linux内核源码分析方法&lowbar;转

Linux内核源码分析方法 转自:http://www.cnblogs.com/fanzhidongyzby/archive/2013/03/20/2970624.html 一.内核源码之我见 Lin ...

《Linux内核原理与分析》教学进程

目录 2019-2020-1 教学进程 考核方案 第一周: 第二周: 第三周: 第四周: 第五周 第六周 第七周: 第八周 第九周 第十周 第十一周: 第十二周 ...

Linux Kernel Oops异常分析

1.PowerPC小系统内核异常分析 1.1  异常打印 Unable to handle kernel paging request for data at address 0x36fef31eFa ...

Linux的任务计划--cron入门

Linux操作系统定时任务系统 Cron 入门 cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动 ...

Linux内核源代码情景分析系列

http://blog.sina.com.cn/s/blog_6b94d5680101vfqv.html Linux内核源代码情景分析---第五章 文件系统  5.1 概述 构成一个操作系统最重要的就 ...

随机推荐

Apache多站点设定

多端口 vi httpd.conf Listen 8090 ServerName localhost Documentroot "/Us ...

兼容:判断 iframe 是否加载完成

判断 iframe 是否加载完成其实与 判断 JavaScript 文件是否加载完成 采用的方法很类似 var iframe = document.createElement("iframe ...

Data 语义学&lpar;1&rpar;

一.Data Member 的绑定(The binding of Data Member) extern float x; class Point3d { public: Point3d( float ...

微软HR泄露的asp&period;net面试题

1.面向对象的思想主要包括什么? 2.什么是ASP.net中的用户控件? 3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载? 4.列举一下你所了解的XML技术及 ...

centos 6&period;5常见lib库安装

在CentOS安装软件的时候,可能缺少一部分支持库,而报错.这里首先安装系统常用的支持库.那么在安装的时候就会减少很多的错误的出现. # yum install -y gcc gdb strace g ...

Python创建目录

需要包含os模块进来,使用相关函数即可实现目录的创建 1.创建目录要用到的函数: (1)os.path.exists(path) 判断一个目录是否存在 (2)os.makedirs(path) 多层创 ...

JavaWeb系列之八(Cookie&amp&semi;amp&semi;Session&rpar;

 1.jsp的入门     jsp就是一个servlet,终于会被编译成servlet,jsp:java server pages,java服务器端页面,包括html+java+jsp的指令    ...

Java 使用Query动态拼接SQl

之前有做个一个自定义报表的查询,这里使用的是一个动态的sql拼接,是前端选择了什么指标就查询什么信息!(这里的指标是多个表的字段,前端随便选择了这些指标,然后后端根据这些指标拼接sql,返回这些指标的 ...

iOS Sprite Kit教程之xcode安装以及苹果帐号绑定

iOS Sprite Kit教程之xcode安装以及苹果帐号绑定 其它的网站上下载安装Xcode 有时候,应用商店下载较慢,所以用户也可以选择从其他网站下载Xcode安装文件.下面讲解这种Xcode的 ...

TCP&sol;IP网络编程系列之三(初级)

TCP/IP网络编程系列之三-地址族与数据序列 分配给套接字的IP地址和端口 IP是Internet Protocol (网络协议)的简写,是为首发网络数据而分配给计算机的值.端口号并非赋予计算机值, ...

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。