[英]Debugger Visualizer, ElementHost, and Edit and Continue problems
我最近為我的應用程序中的一種自定義類型編寫了一個Visual Studio 2008的自定義Debugger Visualizer。 可視化工具的UI用WPF編寫,並托管在元素主機中,並使用IDialogVisualizerService windowService對象進行顯示。
一切正常,我的可視化工具加載並顯示了相關信息,但是如果在加載可視化工具后嘗試在我的應用程序中“編輯並繼續”,則Visual Studio崩潰,沒有任何有用的錯誤消息。
在嘗試調試時,我從解決方案中刪除了幾乎所有代碼,直到只用ObjectSource序列化一個字符串並只顯示一個空元素主機,在編輯並繼續時仍然崩潰。 如果刪除元素主機並顯示WinForms控件或窗體,則不會崩潰。
這是Visualizer代碼:
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");
}
}
}
}
有任何想法嗎?
雖然我沒有真正找到“適當的”修復程序,但是我找到了可以接受的解決方法。
我將可視化文件移到了一個完全獨立的程序中,然后在調試器可視化程序中以單獨的進程啟動可視化程序,並使用命名管道將數據對象發送給它。
這運行良好,並具有附加優勢,即可視化窗口在數據更改和調試會話之間保持不變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.