应用场景:
分别有两个.net程序集,各自独立(即在项目的组织上不能将一个程序集与另一个程序集放到一个解决方案中),但是有一个程序集引用了另外程序集
的dll,这时想要通过运行一个程序集调试另一个被引用了dll的程序集。
解决方法:
在dll(被引用程序集的)被添加到“引用”的同时,请确定dll的.pdb文件是否也同时在dll的相同目录中,
如果没有,则把当前dll对应的pdb文件复制到dll的相同目录;
说明:
在我测试的时候,我发现,在我想调试某个属性时,按F11(Step in)不会跳入到属性的Set代码段中,但是我在被引用程序集中对象定义的时候,
按F11又可以跳入到类的定义代码中,然后,在打开的相应代码中,找到刚刚相同调试的那个属性,然后在set代码中设置一个断点,这时再调试
这个属性的赋值,按F11,F10都可以跳入到这个属性的set代码段中。
所以,如果碰到上面我描述的情况时,不要怀疑调试不起作用,试一试上面的处理方法看是否起作用。(当然盼望有人告诉我答案,为什么会这样?)
调出VS堆栈的快捷键:ctrl+alt+c
调出VS模块的快捷键:ctrl+alt+u
注意:上面的快捷键在运行/调试的时候才会有用;
关于pdb文件的说明,请参照以下的网址
http://www.cnblogs.com/itech/archive/2011/08/15/2136522.html
关于.net调试VS配置的说明文档网址:(尽管我没有按照他的说法试验成功,但是我还是觉得他说明的是比较详细的,值得收藏)
关于附加进程调试:
与之前的应用场景一致。
步骤:
1、准备好含有调试内容的程序集(即,这个程序集的源码工程)(称之:调试程序集)
2、准备好含有调试程序集引用的工程(这个可以是一个工程,也可以是一个可执行应用程序,没有源码的)(称之:引用程序集)
3、编译“调试程序集”,将生成的dll放到引用程序集的执行目录下;(存在就进行覆盖)
4、运行引用程序集(但请不要运行到调用“调试程序集”的那一步)
5、在“调试程序集”的源码工程中(使用VS打开),在“调试”菜单下找到“附加到进程”菜单。
6、点击“附加到进程”菜单,弹出窗体中,选择刚刚在第4步运行起来的应用,然后,点击附加;
7、在调试程序集中,需要中断的位置设置断点。
8、在运行的“引用程序集”的应用中,运行到调用“调试程序集”的那一步;
9、正常,在调试程序集中设置的断点应该就会被命中,即,可以进行一步步的调试工作了