2010-04-06 64 views
0

我最近寫了一個自定義調試器可視爲Visual Studio 2008在我的應用程序自定義類型之一。用於可視化的UI被寫入WPF和在元件的主機託管並使用IDialogVisualizerService windowService對象示出。調試器可視,ElementHost的,和編輯並繼續問題

一切都很正常,我的可視化加載和顯示相關信息,但如果試圖「編輯並繼續」在我的應用程序加載的可視化工具,Visual Studio的崩潰,並沒有有用的錯誤消息後。

在試圖調試這個時,我將幾乎所有的代碼從解決方案中移除到只使用ObjectSource序列化字符串並顯示一個空元素主機的位置,並且仍然在編輯時繼續發生崩潰。如果我刪除元素主機並顯示一個WinForms控件或窗體,則不會崩潰。

下面是可視化代碼:

using System; 
using System.Drawing; 
using System.IO; 
using System.Runtime.Serialization.Formatters.Binary; 
using System.Windows.Forms; 
using System.Windows.Forms.Integration; 
using Microsoft.VisualStudio.DebuggerVisualizers; 
using ObjectVisualizerShared; 
using ObjectVisualizerUI; 

namespace ObjectVisualizer 
{ 
    public class Visualizer : DialogDebuggerVisualizer 
    { 
     protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider) 
     { 
      try 
      { 

       Stream stream = objectProvider.GetData(); 
       if (stream.Length > 0) 
       { 
        BinaryFormatter formatter = new BinaryFormatter(); 
        VisualizerNode node = (VisualizerNode)formatter.Deserialize(stream); 
        if (node != null) 
        { 
         VisualizerWindow window = new VisualizerWindow(node); 
         ElementHost host = new ElementHost(); 
         host.Child = window; 
         host.Dock = DockStyle.Fill; 
         host.Size = new Size(800, 600); 
         windowService.ShowDialog(host); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(string.Format("Error!\n{0}", ex), "Object Visualizer"); 
      } 
     } 
    } 
} 

任何想法?

回答

0

雖然我並沒有真正找到一個「正確」的修復,我發現了一個可以接受的解決辦法。

我移動可視化到一個完全獨立的程序,然後在我的調試器可視我開始在一個單獨過程中的可視化程序和予使用命名管道發送數據對象到它。

這是運作良好,並有額外的好處,在可視化窗口跨數據變化和調試會話持久。