LLDB调试Java进程。跳过EXC_BAD_ACCESS。

6
我试图让调试器不在信号上停止:
proc hand -p true -s false SIGBUS
proc hand -p true -s false SIGSEGV
我甚至尝试将-s false应用于所有信号。
但它仍会在EXC_BAD_ACCESS上停止执行。
这经常发生,有时可能会无限循环。这使得调试变得不可能。 enter image description here 有没有办法让lldb不在这种情况下停止?
1个回答

5

这是一个长期存在的 bug。问题在于,在调试器下运行时,操作系统将 Mach 异常 EXC_BAD_ACCESS 转换为 SIGSEGV 的机制不可用,因此您会一直卡在错误访问上,但由于没有信号被触发,您的处理程序就没有机会处理它。


2
有没有什么方法可以解决这个问题?有一些程序故意引起这样的错误访问(例如JVM空指针检查),这使得通过调试器运行它们变得不可能。 - zakkak
1
@zakkak,我还没有找到解决方案,但我取消了接受此答案的标记,这样你就可以继续讨论,如果你愿意的话,可以分配悬赏。 - serhii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接