我已经在本地构建了Chromium,并尝试使用GDB对其进行调试。由于某些原因,某些断点似乎没有命中。例如,当我这样做的时候
b InjectedScriptBase::makeEvalCallGDB提示
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (InjectedScriptBase::makeEvalCall) pending.但当相关代码被触发时,不会命中断点。
我做错了什么?我现在假设相关的符号是在运行时加载的,但是我应该单独加载它们吗?
发布于 2012-09-01 00:20:51
根据Chromium sources的说法,这个函数有相当长的签名:
void InjectedScriptBase::makeEvalCall(ErrorString* errorString, ScriptFunctionCall& function, RefPtr<TypeBuilder::Runtime::RemoteObject>* objectResult, TypeBuilder::OptOutput<bool>* wasThrown)因此,在设置断点时使用Tab补全是值得的。尝试以下操作:
b 'InjectedScriptBase::makeEvalCall并按Tab键自动完成函数名称。gdb会帮你查找符号表和自动补全函数名。然后,您应该能够设置断点。
发布于 2012-08-31 23:33:38
确保你有足够的内存来调试Chromium。或者尝试在另一台内存更大的机器上进行调试。
https://stackoverflow.com/questions/12217399
复制相似问题