由于工作需要,只有dll文件的源码和客户端exe等程序的情况下改dll库中的某个功能,之前不知道对于这种情况下如何调试,弄了半天终于搞定了,比之前那种throw new exception(要跟踪的变量)效果好多了。先在这里记录一下。

想要调试主程序调用的dll需要注意以下几点:

1、该dll项目是debug状态,否则会出现以下报错,附上报错信息与解决方法

  

生成下面的模块时,启用了优化或没有调试信息:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\...\*.DLL

若要调试此模块,请将其项目生成配置更改为“调试”模式。若要取消显示此消息,请禁用“启动时若没有用户代码则发出警告”调试器选项。

当初遇到此问题时,在网上找了下解决方法,大致如下:

1.右击“解决方案”选择“配置管理器”,将"release”改为"debug".(或是:生成>>配置管理器>>活动解决方案配置>>Debug)。

2. <compilation debug="true"/>

3.工具--> 选项---> 调试----> 常规--> 禁用"启动仅我的代码"。

4.不要在引用和BIN文件夹中同时加如所要引用的类库DLL.在其中一个添加即可,也就是在你的项目文件的Bin中删除你引用的Dll类库,然后在项目中重新添加引用。

5.编译目录有个pdb文件无法写入或者异常,解决方法如下:

1) 首先在退出项目文件下删除WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files下相应项目的文件,如果异常,重启IIS

2) 如果此dll,pdb文件受vss限制,签出这两个文件; 如果是引用的dll项目文件,删除当前项目中bin目录下相应的dll,重新引用dll项目文件

3) 检查该项目文件下bin中该dll, pdb文件属性,去掉只读属性。

由于我以前禁止项目生成时输出pdb文件,故而在debug模式下调试出现上面的错误,后来启用输出pdb文件,调试一切正常。

2、项目——》属性——》应用程序的 输出类型 为类库

3、项目——》属性——》调试 中 在路径中选择你的主程序(即引用dll文件的那个exe)

4、项目——》属性——》生成 中输出路径 为现在主程序所处的目录,即替换掉之前的那个dll文件,使现在调试的这个dll取代之前调用的那个。

然后在当前调试的dll项目中下断点等,即可调试。

 

posted on 2012-09-12 17:07  falcon_fei  阅读(411)  评论(0)    收藏  举报