我在本地构建了Chromium,我正在尝试使用GDB进行调试。出于某种原因,某些断点似乎没有受到影响。例如,当我做
时b InjectedScriptBase::makeEvalCall
GDB提示
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (InjectedScriptBase::makeEvalCall) pending.
但是当触发相关代码时,不会触发断点。
我做错了什么?我目前假设在运行时加载了相关的符号,但是我应该单独加载它们吗?
答案 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。或者尝试在具有更多内存的另一台机器上调试它。