簡體   English   中英

調試器可視化程序,ElementHost和“編輯並繼續”問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM