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)

そのため、ブレークポイントを設定するときにタブ補完を使用する価値があります。次のことを試してください。

b 'InjectedScriptBase::makeEvalCall

Tab キーを押して関数名をオートコンプリートします。gdb は、シンボル テーブルとオートコンプリート関数名を検索する必要があります。次に、ブレークポイントを設定できるはずです。

于 2012-08-31T16:20:50.643 に答える
0

Chromium をデバッグするのに十分なメモリがあることを確認してください。または、より多くのメモリを備えた別のマシンでデバッグしてみてください。

于 2012-08-31T15:33:37.750 に答える