天天看點

用VS調試嵌入在MFC程式裡的WPF View代碼

網友郵件問的,我把問答過程貼出來,希望對其他碰到相似問題的朋友有些幫助:

在工作中碰到這樣一個問題,我用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 ,如需轉載請自行聯系原作者