none
Anzahl der Aufrufe in der Aufrufliste RRS feed

  • Frage

  • Hallo Leute,

    beim Debuggen eines Problems mit Visual Studio reichen mir die 20 Aufrufe, die in der Aufrufliste angezeigt werden, nicht um das Problem zu identifizieren.

    Die letzten 20 Aufrufe sind ausschließlich von der comctl32.dll, AcXtrnal.dll, kernel32.dll und der ntdll.dll.

    Ich bereits ein wenig Recherchiert aber entweder die falschen Betriffe verwendet oder aber nichts zu dem Thema gefunden.

    Gibt es eine Möglichkeit die Anzahl der Aufrufe für die Aufrufliste zu erhöhen/ändern? Wenn ja, was muss ich dafür machen?

    Edit: Achja, ich arbeite mit nativem C/C++.


    Gruß
    Rudolf

    "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." Georg Bernhard Shaw


    Mittwoch, 27. Februar 2013 12:53

Antworten

  • Ich sehe immer alle, bis zum Threadstart...

    Testprogramm:
    [cpp]
    #include <windows.h>
    #include <tchar.h>
    void Test(int i)
    {
        if (i == 0) return;
        Test(--i);
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
        Test(30);
        return 0;
    }[cpp]

    Callstack:

     >        CPP_VS2012.exe!Test(int i) Line 83        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!wmain(int argc, wchar_t * * argv) Line 91        C++
             CPP_VS2012.exe!__tmainCRTStartup() Line 533        C
             CPP_VS2012.exe!wmainCRTStartup() Line 377        C
             kernel32.dll!74fe33aa()        Unknown
             [Frames below may be incorrect and/or missing, no symbols loaded
    for kernel32.dll]
             ntdll.dll!77369ef2()        Unknown
             ntdll.dll!77369ec5()        Unknown

    Bist Du sicher, dass Du im richtigen Thread bist? Wie sieht denn der Callstack aus? Was erwartest Du denn? Glaubst Du nicht, dass Du einfach in einem anderen Thread benachrichtigt wurdest? z.B. via COM?


    Jochen Kalmbach (MVP VC++)
    Mittwoch, 27. Februar 2013 13:53

Alle Antworten

  • Du musst die Symbole aktivieren; vermutlich kann er den Callstack nicht korrekt aufbauen.... Tools|Options|Debugging|Symbols: Mach den Hacken bei "Microsoft Symbol Server"


    Jochen Kalmbach (MVP VC++)
    Mittwoch, 27. Februar 2013 13:18
  • Hallo Jochen,

    vielen Dank für die Antwort.

    Diese Option hate ich bereits gesetzt. Beim Debuggen zeigt mir Visual Studio auch an, dass die Symbole von dem Microsoft-Server geladen werden, allerdings bekomme ich leider nie mehr als 20 Einträgen in der Callstack-Anzeige angezeigt.

    Ich hoffe ja, dass wenn ich mehr 20 Einträge sehe, das ich dann irgendwann auch die Funktionen meiner Anwendung sehe die als letztes aufgerufen wurden bevor es sich in den Betriebssystem-Funktionen verfangen hat.

    Über weitere Ideen bin ich sehr dankbar.


    Gruß
    Rudolf

    "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." Georg Bernhard Shaw


    Mittwoch, 27. Februar 2013 13:34
  • Ich sehe immer alle, bis zum Threadstart...

    Testprogramm:
    [cpp]
    #include <windows.h>
    #include <tchar.h>
    void Test(int i)
    {
        if (i == 0) return;
        Test(--i);
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
        Test(30);
        return 0;
    }[cpp]

    Callstack:

     >        CPP_VS2012.exe!Test(int i) Line 83        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!Test(int i) Line 84        C++
             CPP_VS2012.exe!wmain(int argc, wchar_t * * argv) Line 91        C++
             CPP_VS2012.exe!__tmainCRTStartup() Line 533        C
             CPP_VS2012.exe!wmainCRTStartup() Line 377        C
             kernel32.dll!74fe33aa()        Unknown
             [Frames below may be incorrect and/or missing, no symbols loaded
    for kernel32.dll]
             ntdll.dll!77369ef2()        Unknown
             ntdll.dll!77369ec5()        Unknown

    Bist Du sicher, dass Du im richtigen Thread bist? Wie sieht denn der Callstack aus? Was erwartest Du denn? Glaubst Du nicht, dass Du einfach in einem anderen Thread benachrichtigt wurdest? z.B. via COM?


    Jochen Kalmbach (MVP VC++)
    Mittwoch, 27. Februar 2013 13:53
  • Vielen vielen Dank.

    Ich habe im Eifer des Gefechts übersehen, dass ich gerade im falschen Thread war.


    Gruß
    Rudolf

    "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." Georg Bernhard Shaw

    Mittwoch, 27. Februar 2013 15:12