设置断点,但断点未命中

时间:2012-08-31 14:27:15

标签: c++ gdb chromium

我在本地构建了Chromium,我正在尝试使用GDB进行调试。出于某种原因,某些断点似乎没有受到影响。例如,当我做

b InjectedScriptBase::makeEvalCall

GDB提示

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

但是当触发相关代码时,不会触发断点。

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

2 个答案:

答案 0 :(得分:1)

根据Chromium sources,此功能有相当长的签名:

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

因此在设置断点时使用Tab completition是值得的。请尝试以下方法:

b 'InjectedScriptBase::makeEvalCall

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

答案 1 :(得分:0)

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