可能重複this question。如何在VS2012中調試混合模式C++/CLI時顯示本機類型MFC應用程序
我有一個MFC項目使用/ clr開關和一些C++/CLI代碼來使用.Net組件。最初這是在VS2005上。
升級到VS2012 Update 2時,在調試過程中,沒有爲原生數據類型顯示值或類型。我瞭解到,在VS2010中引入了原生數據類型可視化(natvis)的新機制,並在VS2012中進行了擴展/增強。關於that page的信息,我未選中託管C++兼容模式和C/C++編輯並繼續。之後,斷點被禁用並停止命中。使用「Only Managed」調試器,斷點被擊中,但沒有顯示任何值。
最後,我使用「混合」調試器,並使用__debugbreak()
強制中斷。這導致只有當它們是本地汽車時才顯示整數值;並正確地選取了數據類型。但是,std::string
或CString
值未顯示,而是它們的類型顯示在值列中。同樣,不顯示指針,類成員或函數參數值,類型信息,未定義值或超出範圍顯示在值列中。
行爲在整個汽車,當地人和觀察窗口以及鼠標懸停在符號上都是一致的。
如何在VS2012混合模式C++/CLI MFC應用程序的調試過程中獲取本機數據類型以顯示其值。
我已閱讀this question並驗證所有符號都已加載到模塊窗口中。
顯然,Microsoft是aware of the issue,而即將到來的Update 3的CTP應該修復它。
此外,爲什麼我需要使用__debugbreak()
?
@knockNrod - 我們嘗試使用VS2012和VS2012 Update1。調試速度太慢 - 每個F10需要1-2分鐘才能進入下一行。這是[已知](https://connect.microsoft.com/VisualStudio/feedback/details/751327/debugger-stepping-in-mixed-mode-application-is-very-very-slow)[問題](http ://connect.microsoft.com/VisualStudio/feedback/details/774026/debugger-hangs-in-managed-code-in-mixed-mode-c-app)與VS2012進行混合模式調試。 – 2013-04-27 08:06:42
@Per Lundberg - 非常感謝。確認更新3 RC解決了慢速以及原生符號值。但是,調試器必須手動更改爲「僅限管理」,否則不會觸發斷點。在使用'__debugbreak()'時,不會顯示符號。 – 2013-05-14 12:07:33