使用autoexp.dat和DLL扩展Visual Studio 2003 C ++调试器

时间:2009-06-29 12:52:22

标签: c++ visual-studio debugging

我知道解决方案是使用VS 2005或2008,但目前这不是一个选项。我应该编写VS 2003 C ++调试器的扩展,以改进它在监视窗口中显示数据的方式。我使用DLL而不仅仅是基本的autoexp.dat功能的主要原因是我希望能够有条件地显示内容。即我想能够说“如果名字成员不是空字符串,显示名称,否则显示[其他成员]”

我无法在网上找到很多文档,无论是来自MS还是其他曾经使用过(或试图使用过)VS 2003这一部分的人.MSDN EEaddin示例是一个不错的开始,但非常基本,并没有真正帮助我走得很远。

到目前为止,我只是在学习它的方法,学习如何显示各种类型,而不知道到底我将采用哪种类型。

我已经管理(通过大量试验和错误)来使DLL显示指向基本类型的成员,字符串成员,指向用户定义类型的成员和auto_ptr< int>成员。目前我无法显示矢量成员和auto_ptr< string>成员。

(我发现一个页面说auto_ptrs已被弃用,但我需要能够正确显示它们,因为它们在我的扩展名所用的代码中使用。)

我的问题是:有没有人做过这种事情,你有没有或知道一些关于这个问题的有用文件?

谢谢!

[更新:] 我弄清楚为什么我遇到auto_ptr< string>的问题班级成员。这是因为字符串类的实现方式。它有一个char [16]缓冲区,用于存储短字符串的数据;如果字符串长度超过(15个字符+终止字符),则为char *指针。我不确定是否有可能并且值得尝试破解它以显示更长的字符串(我可以显示足够短的字符串以保存在char [16]缓冲区中)

1 个答案:

答案 0 :(得分:7)