網友郵件問的,我把問答過程貼出來,希望對其他碰到相似問題的朋友有些幫助:
在工作中碰到這樣一個問題,我用VS2008寫了一個可執行程式,這個mfc程式裡面嵌入了wpf view, 我用vs2010開發的ocx裡面hold這個wpf view。我的問題是如果我用vs2008 可以調試mfc程式,碰到裡面需要調用wpf程式的時候如何自動打開vs2010的環境調試。net的程式?
答:
你如果是調試的話,一個程序是不能同時被兩個調試器同時附加的,如果你在用vs 2008調試mfc程式的話,預設你從mfc工程啟動,vs 2008是采用本地調試(native debug)的方式附加調試mfc程式,程式啟動後:
你可以選擇VS 2008菜單裡的“調試”-> “Detach from process” (不好意思,我手頭上暫時沒有中文版vs,不知道中文的翻譯,隻好寫英文的原文),這樣vs 2008就跟mfc程序脫離了。
然後你可以用vs 2008,也可以用vs 2010調試mfc裡的wpf代碼,做法是,點選VS菜單裡的“調試”-> “附加到程序(attach to process....)”,在新打開的“附加到程序”對話框中,在“Attach to: ”文本框的旁邊選擇“Select”。
在彈出的“Select Code Type”對話框中選擇“Debug these code types” ,在清單裡選擇“Managed (v4.0)”(如果你的wpf是4.0的話),或者”Managed(v2.0, v1.1, v1.0)”(如果你的wpf是2.0的話)。
點選OK關閉“Select code type”對話框
在“Available Process”清單中,找到你的程序,點選“Attach”就可以調試了。
附圖是我的VS界面,你可以對着我上面的步驟,和VS截圖操作一下。
問:
我的意思是,同時調試,vs08調試MFC,vs2010調試wpf,因為兩者之間有互動。而且vs2010寫的是個ocx被mfc調用,想在被啟動調用的時候打開vs2010并加載wpf的pdb檔案。二者可以協同工作
同時調試mfc和wpf代碼的方法是有的,但是你不能用兩個調試器,因為一個程序是不能同時被兩個調試器同時附加的,但是你可以在一個調試器裡同時調試C++和WPF代碼,有幾種方法:
下面的例子是用VS自帶的例子程式來示範的,檔案路徑在:
\Program Files\Microsoft Visual Studio 10.0\Samples\1033\VC2010Samples\C++\MFC\WpfInterop
如果你看不到上面路徑的話,将\Program Files\Microsoft Visual Studio 10.0\Samples\1033\VC2010Samples.zip解壓就可以了。
1、直接打開exe調試的方法:
啟動Visual studio,最好是2010,2008也可以。
選擇VS菜單裡的“File” – “Open” – “Project/Solution”
在打開項目對話框中選擇你的MFC程式的exe檔案(注意,是exe檔案)。
然後在“Solution Explorer”裡選擇Exe并右鍵單擊它,選擇“Properties”
在屬性對話框中,将“Debugger Type”預設的“Auto”改成“Mixed”。
然後你就可以在C++和C#代碼裡設定斷點調試了。
如下圖所示:
2、在工程裡的方法:
用visual studio打開mfc工程
右鍵單擊工程的屬性
在工程屬性頁裡選擇“調試”,并将“調試器類型”改成“混合”
3、附加的方法:
啟動MFC程式,然後啟動VS。
選擇VS菜單裡的“Debug” – “Attach to process”
在彈出的“Attach to process”對話框裡,在“Attach to: ”文本框的旁邊選擇“Select”。
在彈出的“Select Code Type”對話框中選擇“Debug these code types” ,在清單裡選擇“Managed (v4.0)”(如果你的wpf是4.0的話),或者”Managed(v2.0, v1.1, v1.0)”(如果你的wpf是2.0的話)。
并勾上“Native”,表明同時調試managed和native代碼。
點選OK關閉“Select code type”對話框
本文轉自 donjuan 部落格園部落格,原文連結: http://www.cnblogs.com/killmyday/archive/2012/06/08/2542350.html ,如需轉載請自行聯系原作者