Visual Studio 2015 Debugger zeigt nicht alle Werte an :(



  • Moin zusammen,

    bin neu beim VC 2015. Bisher habe ich mit 2010 gearbeitet. Wir übersetzen IMMER in Release, stellen aber Debugging an und die Optimierungen "OptimaZation" und "Inline Function Expansion" immer aus. Bisher wurde in dem Projekt beim Debugger immer alle Werte anständig angezeigt. Beim neuen Studio auszugsweise folgende Daten falsch angezeigt:

    * CTreeCtrl* pmyTreeCtrl wird fälschlicherweise mit NULL angezeigt.
    * CString mainNodeText; --> Unable to resolve identifier: 'mainNodeTxt"
    * int index --> Der Wert der lokalen Variablen oder des Arguments kann nicht abgerufen werden, weil er an diesem Anweisungszeiger nicht verfügbar ist, eventuell wurde er beim Optimieren entfernt.

    Laufen tut die Anwendung in einer VMware Win7x64 und ich bin authentifiziert auf der VMware drauf.

    Muss ich da noch irgendwo was anpassen?

    Bin für jeden Tipp dankbar!

    Gruß Kai


  • Mod

    Evtl. /GL eingeschaltet (Whole Programm optimization)

    Ansonsten halte ich diese Methode nicht für günstig und für eine Verschwendung von Ressourcen und Energie. Optimierung hat einen Grund...

    Und mit /Zo hat man auch ein gutes Hilfsmittel mit Optimierung umgehen zu können.
    (Seit VS 2013 Update 3)



  • Danke Martin.

    Habe das /Zo bei Additional Options drin stehen. Ist das richtig so?

    Habe mal meine Schaltereinstellungen rausgesucht:

    Compiler
    /FR".\Release\" /GS /analyze- /W3 /Gy /Zc:wchar_t /I"inc\" /I"src\" /I"..\inc" /I"..\..\GLOB\inc" /Zi /Od /Ob0 /Fd".\Release/" /fp:precise /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_VC80_UPGRADE=0x0600" /D "_MBCS" /D "_AFXDLL" /errorReport:prompt /GF- /WX- /Zc:forScope /Oy- /clr /FU"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll" /MD /Fa".\Release/" /EHa /nologo /Fo".\Release/" /Fp".\Release/pst.pch"
    Additional
    /Zo

    Linker
    /OUT:".\Release\bin\\s7wnpstx.exe" /MANIFEST /PDB:"..\lnk\release\s7wnpstx.pdb" /DYNAMICBASE:NO "s7areglx.lib" "s7epaapi.lib" /ALLOWISOLATION /FIXED:NO /DEBUG /MACHINE:X86 /INCREMENTAL:NO /PGD:"F:\WS\WS_PST_556\TEAM\SRC\PST\pst\Release\bin\s7wnpstx.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:".\Release\s7wnpstx.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:".\Release\bin\" /LIBPATH:"..\..\GLOB\lib\release" /LIBPATH:"LIB" /LIBPATH:".\s7dnpstx\Release" /TLBID:1

    Gruß und Dank
    Kai



  • Habe noch ein paar Ergänzungen:

    - Sprache ist C++ und irgendwo in einer Ecke ist ein kleiner C# Part integriert.
    - /clr muss an sein

    Ich vermute das /clr stört hier irgendwie.

    Eine Anwendung vom Studio erzeugt lässt sich debuggen.


  • Mod

    /clr muss nur für die Codeteile an sein, bei denen auch die CLR genutzt wird, selbst in einem Code teilweise nur CLR Code verwendet kann man über pragmas die Erzeugung von managed code ausschalten.



  • Ich habe für reines Debugging folgende Lösung umgesetzt, die funktioniert:

    • In der VCPROJ <CLRSupport>true</CLRSupport> auf <CLRSupport>false</CLRSupport> geändert.
    • In den Projektsettings CLR ausgeschaltet.
    • Das Define RELEASETEST zugefügt, über das die C# Codestellen ausgeblendet werden.

Anmelden zum Antworten