locked
FAQs: 怎样实现一个自定义调试器可视化工具? RRS feed

  • 问题

  • 为了帮助大家更好地学习Visual Studio Debugger 技术,微软论坛技术支持团队编辑了一些列的 "Visual Studio Debugger 常见问题及解答" 精华帖。
     
    本帖的主题是:怎样实现一个自定义调试器可视化工具? 

    如果您觉得这个帖子对您的学习、工作有所帮助,请再把这个帖子分享给你的同学、同事和朋友。
     
    如果您想阅读更多的 "Visual Studio Debugger常见问题及解答",请打开索引页面:
     http://social.msdn.microsoft.com/Forums/zh-CN/vstudiozhchs/thread/4286da37-2984-49a0-870b-ae89f9bc7375


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。

    2011年5月4日 2:42

答案

  • Visual Studio 2005Visual Studio2008都有一个模板叫调试器可视化工具,创建一个自定义调试器可视化工具,你能重写模板的Show方法,下面是一个演示来创建一个自定义类型的自定义调试器可视化工具

     

    1.  创建一个类库项目,然后添加两个类,例如StudentOurClass。它们是你想要在调试器可视化工具中使用的自定义类型。

           namespace TestVisualizer

    {

        [Serializable]

        public class Student    {.....}

        [Serializable]

        public class OurClass    {.....}

     }

    2.  创建另一个类库项目,在项目中添加一个调试器可视化工具项(再前一个项目中添加引用)

           [assembly: System.Diagnostics.DebuggerVisualizer(typeof(CustomVisualizer.OurClassVisualizer),

    Target = typeof(TestVisualizer.OurClass), Description = "Custom Visualizer")]

    namespace CustomVisualizer

    {

        public class OurClassVisualizer : DialogDebuggerVisualizer

       {

              protected override void Show(IDialogVisualizerService windowService,

             IVisualizerObjectProvider objectProvider)

             {

                   OurClass oc = (OurClass)objectProvider.GetObject();

                   using (VisualizerForm displayForm = new VisualizerForm())

                 {

                     displayForm.list = oc.ClassList;

                     displayForm.average = oc.AverageAge;

                     windowService.ShowDialog(displayForm);

                 }

            }

    3. 实现VisualizerForm 类,右键单击项目名然后加入一个windows form类,拖拽一些控件(一个DataGridViewLabel控件),双击窗体,加入如下代码片段:

    public partial class VisualizerForm : Form

    {

            public VisualizerForm()

            {

                InitializeComponent();

            }

            public List<Student> list = null;

            public int average = 0;

            private void VisualizerForm_Load(object sender, EventArgs e)

            {

                this.lblage.Text = average.ToString();

                this.dataGridView1.DataSource = list;

              this.dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);

            }

    }

    4.  建一个项目,复制dll文件到文件夹

    \Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\Visualizers

    \My Documents\Visual Studio 2008\Visualizers

    5. 创建一个Windows Forms项目来测试这个可视化工具,在断点中断后,移动光标到变量上,单击图标,我们的可视化工具出现了。

     

    更多的信息关于怎样实现一个调试器可视化工具,请参照:

    怎样写一个可视化工具:

    http://msdn.microsoft.com/en-us/library/e2zc529c.aspx

    怎样写一个自定义的可视化工具:

    http://blogs.msdn.com/deeptanshuv/archive/2005/03/21/400194.aspx


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年5月4日 2:43