社区
进程/线程/DLL
帖子详情
dll库调试碰到莫名其妙的问题,
开始远离编程
2005-03-29 10:20:18
对dll调试的时候,碰到莫名其妙的问题.环境VS.net 2003. win 2000 server.
调试过程中,主程序能够调用dll导出的函数,但是单步执行进去,VC中所指向的代码肯定不对,
遇到return语句不返回(按照判断条件,不应该执行到那),直接往下执行。反正指向的代码肯定和实际执行的代码对不上号了。结果当然是没办法调试了。郁闷~~~
不知道哪个大虾遇到过这种情况。
...全文
166
14
打赏
收藏
dll库调试碰到莫名其妙的问题,
对dll调试的时候,碰到莫名其妙的问题.环境VS.net 2003. win 2000 server. 调试过程中,主程序能够调用dll导出的函数,但是单步执行进去,VC中所指向的代码肯定不对, 遇到return语句不返回(按照判断条件,不应该执行到那),直接往下执行。反正指向的代码肯定和实际执行的代码对不上号了。结果当然是没办法调试了。郁闷~~~ 不知道哪个大虾遇到过这种情况。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
开始远离编程
2005-03-29
打赏
举报
回复
sigh~~~突然觉得结贴太早了,应该讨论一下为什么会出现这种情况?
开始远离编程
2005-03-29
打赏
举报
回复
问题已经解决,问题出在下面几行全局类的定义上。编译能通过,语法也没错。
真是莫名其妙。与这几行在同一个文件中的代码,CWnd::VC能产生提示tooltip,但是pWnd->不能产生提示。g_arrGroupArray.这样也不能产生提示。同时,调试时代码指向出错,一律向上偏移7行。
CMutex g_WndArrayMutex;
CPtrArray g_arrGroupArray;
CMutex g_GroupArrayMutex;
CPtrArray g_arrArray;
CMutex g_ArrayMutex;
CPtrArray g_arrLUAArray;
CMutex g_LUAArrayMutex;
没办法,只好把他们单独放到一个CPP文件里,或者改成指针定义,然后new出来。
结贴
开始远离编程
2005-03-29
打赏
举报
回复
sigh~~~ 已经rebuild all n次了,能删的都删过了,增量编译也去掉了。
而且还在其他机子上试了,还是老样子。
bobob
2005-03-29
打赏
举报
回复
rebuild all
Sander
2005-03-29
打赏
举报
回复
可能是:
1。 你的代码是否要build all一下(可能是老code)
2. 可能是你的Dll已经在内存在。
开始远离编程
2005-03-29
打赏
举报
回复
断点没带?.只不过代码向上偏移了几行.所以我可以在空行处设置断点,而且也能够停下来.
mwp
2005-03-29
打赏
举报
回复
如果断点带有"?"则是调试版本跟用的版本不符
开始远离编程
2005-03-29
打赏
举报
回复
应该不是版本的问题吧,我检查了N次了。我设置了项目依赖属性。每次都重新生成DLL,dll生成目录直接指向EXE所在目录。调试的代码指向好像是往上偏移了7行,每次都指向应该指向的代码的前面第7行处。还有那个页面也很奇怪,pWnd->这样使用时VC不能自动弹出提示。CWnd::这样可以弹出。
xuzheng318
2005-03-29
打赏
举报
回复
估计是版本问题!
BigFanOfCpp
2005-03-29
打赏
举报
回复
是DLL版本的问题,也就是经典的,讨厌的,郁闷的DLL HELL问题.
检查你是否将应用程序的DLL更新成你正在调试的DLL版本.
比如你的老版本DLL和应用程序放到同一目录下,而你正在调试的DLL却不在这里,就会出现这个问题.
sclxf
2005-03-29
打赏
举报
回复
顶,关注
开始远离编程
2005-03-29
打赏
举报
回复
static char DefaultGlobalVarList[] = "g_time,g_var1,g_var2,g_var3"
",g_var4,...g_varn";
这样写编译没有错,结果也没错。但是就发生上面的情况。
后来改成这种写法就没有问题了。
static char DefaultGlobalVarList[] = "g_time,g_var1,g_var2,g_var3, \ g_var4,...g_varn";
=============================
上面的是C++的写法吧??下面的是C的写法?
可能跟我在负责导出函数的头文件中,还有导出函数都加了extern "C"关键字有关吧。
反正只能先这样了。最近调试过程中老是出现莫名其妙的问题。还好可以到CSDN上和各位
讨论一下,要不然真的要郁闷死了。
再次感谢各位的支持。
//bow
开始远离编程
2005-03-29
打赏
举报
回复
问题已经解决,问题出在下面几行全局类的定义上。编译能通过,语法也没错。
真是莫名其妙。与这几行在同一个文件中的代码,CWnd::VC能产生提示tooltip,但是pWnd->不能产生提示。g_arrGroupArray.这样也不能产生提示。同时,调试时代码指向出错,一律向上偏移7行。
CMutex g_WndArrayMutex;
CPtrArray g_arrGroupArray;
CMutex g_GroupArrayMutex;
CPtrArray g_arrArray;
CMutex g_ArrayMutex;
CPtrArray g_arrLUAArray;
CMutex g_LUAArrayMutex;
没办法,只好把他们单独放到一个CPP文件里,或者改成指针定义,然后new出来。
结贴
==========================
不好意思,这个结论有误。(当时我把全局变量都扔到另一个cpp文件中了,就解决了,
没有仔细尝试,后来仔细找了一下原因)
最后的原因是出在下面的两个字符串数组定义,这两个字符串数组都很长,
我把它们分成九行写。
static char DefaultFunctionList[] = "min,max,add,...";
static char DefaultGlobalVarList[] = "g_time,g_var1,g_var2,g_var3,g_var4,...g_varn";
我当时是这样写的:
static char DefaultGlobalVarList[] = "g_time,g_var1,g_var2,g_var3"
",g_var4,...g_varn";
这样写编译没有错,结果也没错。但是就发生上面的情况。
后来改成这种写法就没有问题了。
static char DefaultGlobalVarList[] = "g_time,g_var1,g_var2,g_var3, \ g_var4,...g_varn";
oyljerry
2005-03-29
打赏
举报
回复
DLL是什么版本,有什么功能
VC6.0
调试
大全
VC6.0
调试
大全 VC
调试
方法大全 一、
调试
基础
调试
快捷键 F5:开始
调试
Shift+F5:停止
调试
F10:
调试
到下一句,这里是单步跟踪 F11:
调试
到下一句,跟进函数内部 Shift+F11:从当前函数中跳出 Ctrl+F10:
调试
到光标所在位置 F9:设置(取消)断点 Alt+F9:高级断点...
关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.
dll
) 中定义--的
问题
分析解决
最近在
调试
一个从网上下载的源码,结果
碰到
如题所说的很多错误,通过阅读下面这篇文章顺利解决了
问题
,非常感谢原作者,这里也转载过来供大家一起参考学习。 from: http://blog.csdn.net/sptoor/archive/2011/02/23/6203376.aspx ( KingOX的提示:不知哪个大神写的!非常有益!阅读前需要对静态
库
(.lib)、动态
库
(.
dll
)
VC++ 6.0 中如何使用 CRT
调试
功能来检测内存泄漏
调试
方法
VC++ 6.0 中如何使用 CRT
调试
功能来检测内存泄漏 作者:JerryZ 下载例子源代码 最近看了周星星 Blog 中的一篇文章:“VC++6.0中内存泄漏检测”,受益匪浅,便运行其例子代码想看看 Output 窗口中的输出结果,可惜怎么弄其输出都不是预期的东西,郁闷了半天,便到水坛里找到周星星,请求他指点一、二,然而未果。没有办法,最后我一头栽进 MSDN
库
狂搜了
VC
调试
方法大全
一、
调试
基础
调试
快捷键 F5: 开始
调试
Shift+F5: 停止
调试
F10:
调试
到下一句,这里是单步跟踪 F11:
调试
到下一句,跟进函数内部 Shift+F11: 从当前函数中跳出 Ctrl+F10:
调试
到光标所在位置 F9: 设置(取消)断点 Alt+F9: 高级断点设置 跟踪
调试
1、 尽量使用快捷键时行
调试
2、 观察调
Windows程序
调试
----第三部分
调试
技术----第10章
调试
多线程程序
第10章
调试
多线程程序 线程。当一个可怜的灵魂不得不在多线程环境中重现并诊断一个
问题
时,一个像线程这样优雅的结构所带来的痛苦之大是令人惊奇的。无论设计多么简单而直接,在程序中多引入仅仅一个线程都会带来令人吃惊的
调试
困难。所以,不管什么时候,做出在程序中使用多线程的决定都必须慎之又慎。 如果你没有计算多线程将给程序的正确性带来的影响和
调试
时将耗费的额外时问,最好不要莽撞地引入多线
进程/线程/DLL
15,467
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章