我写了一个无限循环,如下面的
for (size_t i = words-1; i >= 0; --i) {
... data[i] ...
}
它也可以访问OOB内存。可执行文件与coredump崩溃。使用带有coredump的gdb告诉我,当我是一个庞大的数字时它会崩溃。
但是,lldb可以成功运行相同的可执行文件而不会发生任何崩溃...... LLDB是否“解释”了代码并为我解决了问题?
答案 0 :(得分:0)
不,对于调试器而言,这将是一件可怕的事情!一般的调试器,特别是lldb,尽可能地使程序尽可能地运行程序。运行时,调试器必须完成一些侵入性工作。 - 例如当需要在新库中读取共享库加载时,它必须暂停,并且调试器首先获得发送到程序的信号的破解。因此,特别是在多线程程序中,调试器可能会扰乱时序。但它永远不应该改变程序中代码的指令流。
如果您可以在命令行中运行而不是在lldb中组成显示崩溃的测试用例,请提交lldb错误跟踪器的错误:
并包含示例。