- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是故障转储分析的新手。这是我的 vmcore 的 bt -f
的输出,我想查看它当时持有的函数 foo
的参数值。我有一台 64 位机器,浏览代码后我发现 foo
只接受一个参数。无论如何,有没有办法知道哪个地址属于哪个参数。
#4 [ffff8807adfaf8c0] foobar at ffffffffa11c7c15 [foo]
ffff8807adfaf8c8: ffff881033e1d800 ffff8807adfaf8e8
ffff8807adfaf8d8: ffff8807adfaf938 ffffffffa11c7ce1
这是最后的寄存器值
RIP: 00007fa64fdfb907 RSP: 00007fff2a187ca0 RFLAGS: 00010246
RAX: 00000000000000a6 RBX: ffffffff8100b072 RCX: 00007fa6506f7390
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00007fa6508fe910
RBP: 00007fa6508fe8f0 R8: 00007fa6508fe930 R9: 0000000000000000
R10: 00007fff2a1884b0 R11: 0000000000000246 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000000 R15: 00007fa6508fe990
ORIG_RAX: 00000000000000a6 CS: 0033 SS: 002b
最佳答案
foobar()
的参数可能是在寄存器中传递的,因此它可能根本不存在于任何内存地址。参数的类型将决定它是在寄存器中还是在内存中传递。
您在评论中提到该函数的原型(prototype)是:
static void foobar(struct bar *b)
因此,第一个参数是常规 INTEGER 类型(由 x86_64 ABI 定义;这包括指针)。要找到该指针参数的值,您需要查看 foo
函数从入口点到当前指令的反汇编(即 RIP
).该值将传递给 %rdi
中的函数。
但是,%rdi
中的值可能已在函数入口和发生转储的指令之间被覆盖或修改。在这种情况下,您可能需要做一些侦探工作以回溯并找到最初通过的论点。
作为一般方法,我建议:
获取函数的反汇编,从入口点到显示的 RIP
。
看看 %rdi
在反汇编中是如何使用的。有什么东西修改了%rdi
吗?是否有任何函数调用(它们本身可能会覆盖 %rdi
值)。如果不是,您的参数是 00007fa6508fe910
如果 %rdi
被修改,查看是否已复制到另一个寄存器,或保存在堆栈中。如果不是,请查看调用者如何通过反汇编生成该指针。
关于linux - 我如何知道哪个地址属于故障转储中函数的哪个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33931247/
如果有一张有客户的 table 和一张有地址的 table 。 一位客户必须(仅)有一个地址,但地址不必有客户(取决于字段类型)。所以我只是问如何告诉cake在寻找客户时获取客户地址,但在寻找地址时不
我有一个问题,我需要获取我的画廊表的所有图像(路径),该表拥有博物馆和拥有博物馆的用户。我得到了图像的路径,但这些与拥有博物馆的 user_id 没有关联。 所以简短的描述: 每个用户拥有一个博物馆,
我有一个问题,我需要获取我的画廊表的所有图像(路径),该表拥有博物馆和拥有博物馆的用户。我得到了图像的路径,但这些与拥有博物馆的 user_id 没有关联。 所以简短的描述: 每个用户拥有一个博物馆,
我有用户和个人资料(一对一属于用户) type User struct { ID int Username string Password string
我想以类似于'belongs to' association的方式使用GORM的Django's one-to-one relationships。考虑以下示例,其中每个User与一个Profile相
长期从事 Rails 开发, Backbone 菜鸟。 在我的 Rails 模型中,一个项目有很多任务,一个任务属于一个项目......标准的东西。 尝试在集合中获取项目的任务 json。 Examp
让我们直奔问题(使用 Grails 1.1.1,它应该适用于以前的问题) 我有 2 个域,即:用户和详细信息,如下所示: Class User { String userName ; ..
我正在尝试在 Rails 中设置模型关系,并且需要您的帮助,因为它不起作用:0 class User :creator_id end 就架构而言,request_threads表具有creator_
注意:我在编写问题时解决了问题,因此不需要答案。仍然与答案分享,以便有相同经历的人可以从中受益。 我有一个回收器 View ,其中包含图像和 2 个 TextView 。我想在单击图像时旋转图像,但发
我正在尝试为我的应用程序中的所有按钮添加自定义点击声音。我已经为 UIButton 创建了一个类类别,其中包含以下代码: NSURL *soundURL = [NSURL fileURLWithPat
我有这样一个IP:12.12.12.12 我正在遍历不同的 IP 范围(12.12.12.0/24(示例))格式,并尝试查看 IP 是否在该范围内。 我尝试了各种方法,例如 inet_addr 和比较
看完这个问题 ASP.NET MVC: Nesting ViewModels within each other, antipattern or no? 和 Derick Bailey 的评论 i t
我正在使用 FeedWordPress 从子公司网页将新闻导入母公司的新闻卷。 可在此处查看特定项目的 RSS 摘录:Pastebin 如您所见,我正在将我需要的图像放入 RSS 文件、描述 bloc
假设我有以下数据库架构: dogs 和 owners 与经典的 belongsToMany 相关联。 walks 表怎么样?我希望能够在这种关系中使用 Eloquent 好东西: $dogs = Do
我不知道出了什么问题,但我无法使用 :class_name 选项让belongs_to 工作。有人可以启发我。非常感谢! 这是我的代码片段。 class CreateUsers false
属于 JavaScript 对象原型(prototype)的回调函数如何访问对象成员?回调不能关闭,一切都必须定义如下: function Obji(param){ this.element =
有人可以解释一下 MarkupCompilePass1 和 PartialClassGenerationTask 这两个构建任务是如何归属在一起的吗?目前我不知道他们是否共存或者是否需要对方。有人可以
现在,我尝试了解 Grails 域类和 GORM 中的工作原理。所以,我尝试实验: 我试验了两个域类:Main 和 Sub。 我们走吧! 第 1 步: class Main { String
所以我有一个模型 App.DailyEntry = DS.Model.extend({ user_id: belongsTo('user'), entries: hasMany('En
我正在使用 primeng 组件选项卡菜单。 https://www.primefaces.org/primeng/#/tabmenu我找不到将所选 TAB 的颜色更改为不同颜色的方法。 最佳答案 抱
我是一名优秀的程序员,十分优秀!