0

私のプロジェクトでは、エントリが発生している場所からプロジェクトまで追跡できませんでした。私がコールスタックを調べているとき、それは雇い主に次のように与えています

mfc100d.dll!_DllMainCRTStartup(void* hDllHandle, unsigned long dwReason, void *lpreserved) ntdll.dll!77328968()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] ntdll.dll!77335c11()
ntdll.dll!7733500a()
ntdll.dll!773335e9()

次に、コードはにジャンプし CWinApp::InitInstance()ます。しかし、それがどうなるかは!_DllMainCRTStartup、私が追跡するのが難しい作業です。昨日からやってみましたが、見つかりませんでした。

注:設定では:

Entry point is blank

No Entry: No

4

2 に答える 2

1

メイン スレッドに属し、main()関数に戻らないスタック トレースは、グローバル オブジェクトの構築中 (つまり、トップレベルで宣言中) に何か問題が発生したように聞こえます。あなたはそれを調査したいかもしれません。

つまり、そのDllMainCRTStartup関数は C++ ランタイム サポート ライブラリから直接呼び出される可能性があります。

于 2013-02-26T10:00:41.303 に答える
1

次の 2 つの方法で、Microsoft デバッグ シンボルを読み込んで問題を解決し[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]、実際のスタックを確認できます。

  1. コールスタックでエントリを右クリックし、選択Symbol Settings...してから押しますLoad Symbols from Microsoft symbols servers
  2. Tools -> Options -> Debugging -> Symbols同じダイアログに移動し、もう一度押しますLoad Symbols from Microsoft symbols servers

これにより、少なくともスタックが解決され、システム コールが表示されるはずです。

于 2013-02-26T09:20:53.663 に答える