1

我已经在本地构建了 Chromium,并且正在尝试使用 GDB 对其进行调试。出于某种原因,某些断点似乎没有命中。例如,当我这样做时

b InjectedScriptBase::makeEvalCall

GDB 提示

Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (InjectedScriptBase::makeEvalCall) pending.

但是当触发相关代码时,没有命中断点。

我究竟做错了什么?我目前假设相关符号是在运行时加载的,但我应该单独加载它们吗?

4

2 回答 2

1

根据Chromium 消息来源,这个函数有相当长的签名:

void InjectedScriptBase::makeEvalCall(ErrorString* errorString, ScriptFunctionCall& function, RefPtr<TypeBuilder::Runtime::RemoteObject>* objectResult, TypeBuilder::OptOutput<bool>* wasThrown)

所以在设置断点时使用 Tab 补全是值得的。尝试以下操作:

b 'InjectedScriptBase::makeEvalCall

并按 Tab 键以自动完成函数名称。gdb 应该为您查找符号表和自动完成函数名称。然后你应该能够设置断点。

于 2012-08-31T16:20:50.643 回答
0

确保您有足够的内存来调试 Chromium。或者尝试在另一台内存更大的机器上调试它。

于 2012-08-31T15:33:37.750 回答