首页 > 代码库 > VS调试Dll小小经验
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源代码中为止。
至此,解决了问题。。。
PS:万里长城万里长,前进的道路依旧长。。。
VS调试Dll小小经验