gpt4 book ai didi

c - 为什么我在调试 Ruby C 扩展时会在 gdb 中收到 SIGTRAP?

转载 作者:行者123 更新时间:2023-11-30 16:05:20 25 4
gpt4 key购买 nike

我想使用 rb_p() 来帮助调试 ruby​​ C 扩展,但每次使用它时,我都会在 gdb 中收到 SIGTRAP!

这是一个例子:

(gdb)p user_defaults

$3 = 137559900

(gdb) 调用 rb_p(user_defaults)

{:fill=>true,:texture=>#}

(gdb)n

程序收到信号SIGTRAP,跟踪/断点陷阱。is_a_hash (try_hash=137560420) at utils.c:65(gdb)

为什么会发生这种情况?我怎样才能阻止它发生?

最佳答案

SIGTRAP 是由断点异常引起的,特别是由 x86 上的 int3 指令(中断 3)引起的。您的代码可能正在执行 int3。查看 gdb 告诉您的信息 - 位于 is_a_hash() 函数中的 utils.c 第 65 行。如果您无权访问源代码,您至少可以通过键入

从 gdb 获取反汇编代码
disas try_hash

在 gdb 提示符下。

关于c - 为什么我在调试 Ruby C 扩展时会在 gdb 中收到 SIGTRAP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1269629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com