VS调试Dll小小经验

问题描述:

1.A.dll调试命令中填的B.exe,A工程中F5,此时B.exe运行启动,客户端运行连接B,此时,会重新启动一个B.exe
2.直接在B工程中F5,此时此时B.exe运行启动,客户端运行连接B,则不会重新启动一个B.exe
出现现象1,所以导致我不能debug进入到A.dll工程中单步调试。。。

方法一:新建一个解决方案,把两个工程添加进来,dll与exe同一个目录,问题依旧。。。

发现一:

F5与直接双击运行的区别:F5与直接运行程序的区别,当前路径目录不同,一个Debug的区别;

        char* path=new char[100];
ZeroMemory(path,100);
GetCurrentDirectoryA(100,path);
CString strpath;
strpath.Format("%s",path);
AfxMessageBox(strpath);

        delete[] path;

方法二:接着按照赵老师的指点:设置F5时使用指定的目录(项目、属性、配置属性、调试、工作目录:……),问题依旧。。。

涨姿势,下面方法来自“zhao4zhong1”,赵4老师:

①直接运行B.exe,客户端连接。
②进入VS IDE
文件、关闭解决方案。
工具、附加到进程、可用进程、里面选你要调试的进程B.exe、点“附加”按钮……

②进入VS IDE
文件、关闭解决方案。
工具、附加到进程、可用进程、里面选你要调试的进程B.exe、点“附加”按钮、再点“全部中断”按钮、再按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂且光标落在你的dll源代码中为止。

扫描二维码关注公众号,回复: 9087846 查看本文章

至此,解决了问题。。。


PS:万里长城万里长,前进的道路依旧长。。。


发布了161 篇原创文章 · 获赞 17 · 访问量 73万+

猜你喜欢

转载自blog.csdn.net/nanfeiyannan/article/details/42490351