Debug完全没事,Release下函数代码段自动跳过的问题(在线急救)

BullWeiHaiDong 2010-07-24 11:03:11
如图,这段代码怎么会无故跳过呢? 编译环境 VC 2005.Debug下数据和运行都完全没事,怎么一到Release 下就不行了呢.跑遍了Google也没末能找到答案,哪位大虲帮帮忙吧.小弟感激涕临.
有图两张在此:
http://hi.csdn.net/space-5055420-do-album-picid-596773-goto-down.html

void LizArchive::load()
{
SAFE_DELETE_LIZ(mLizDir);
mLizDir = OGRE_NEW Liz::CLiz_dir();
if (!mLizDir->open(mName.c_str()))
{
SAFE_DELETE_LIZ(mLizDir);
OGRE_EXCEPT(Exception::ERR_INTERNAL_ERROR, mName + " - error whilst " + ": " + "Can not open",
"ZipArchive::checkZzipError");
}

Liz::LizFileInfo lizEntity;
while (mLizDir->readDir(&lizEntity))
{
Ogre::FileInfo info;
info.archive = this;
// Get basename / path
StringUtil::splitFilename(lizEntity.filename, info.basename, info.path);
info.filename = lizEntity.filename;
// Get sizes
info.compressedSize = lizEntity.compresssize;
info.uncompressedSize = lizEntity.compresssize;

if (info.basename.empty())
{
info.filename = info.filename.substr (0, info.filename.length () - 1);
StringUtil::splitFilename(info.filename, info.basename, info.path);
// Set compressed size to -1 for folders; anyway nobody will check
// the compressed size of a folder, and if he does, its useless anyway
info.compressedSize = size_t (-1);
}
mFileList.push_back(info);
}
}
...全文
234 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
gamemagic 2010-07-29
  • 打赏
  • 举报
回复
OGRE…原来是开发游戏的
BullWeiHaiDong 2010-07-29
  • 打赏
  • 举报
回复
谢谢各位了,问题还是实质性地解决。以后再看看了,不能卡太久。还得赶项目呢。
yutaooo 2010-07-24
  • 打赏
  • 举报
回复

应该可以显示的吧。但是,由于一些优化的效果,可能会有些干扰的。

关键是你有没有配置携带调试符号。通常是建议在任何版本(debug,release)中都配置调试符号的。

找找看Generate Debugging Information,设为true。

BullWeiHaiDong 2010-07-24
  • 打赏
  • 举报
回复
小弟还有一个小问题问下大家:在release下单步走,是不是看不到局部变量的值的?
BullWeiHaiDong 2010-07-24
  • 打赏
  • 举报
回复
死火,程序自然好了,一行代码都没有动.原先函数体里面的数据完全是错的,怎么现在又对了呢??.数据问题再另外开贴
ayw215 2010-07-24
  • 打赏
  • 举报
回复
用是啥编译器?多换几个断点试一试呢
yutaooo 2010-07-24
  • 打赏
  • 举报
回复

那么这样,在info.filename之前再设个断点,试试,看看会不会被拦住。

感觉上就是个操作不当。程序如果能这么随处乱跳,程序员还怎么混啊!
BullWeiHaiDong 2010-07-24
  • 打赏
  • 举报
回复
没有啦,我放了一个断点在函数的开头,点F10,一下就到info.filename = info.filename.substr (0, info.filename.length () - 1)来了
yutaooo 2010-07-24
  • 打赏
  • 举报
回复

大哥,你不会是设了2个断点,一个设在SAFE_DELETE_LIZ(mLizDir);
另一个设在info.filename = info.filename.substr (0, info.filename.length () - 1);上了吧!

单步调试先~~
BullWeiHaiDong 2010-07-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 newxdlysk 的回复:]

那段应该是处理异常的代码了,没异常自然不会进去了
[/Quote]
程序没有进到那里 OGRE_EXCEPT
而是从 SAFE_DELETE_LIZ(mLizDir);
跳到了 if (info.basename.empty())
里面,上面的链接有汇编截图,能帮我看看什么问题吗???
BullWeiHaiDong 2010-07-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yutaooo 的回复:]
OGRE_EXCEPT() 可能是个宏吧? 是否会throw异常? 程序是否会走到这个地方?
[/Quote]
程序从 SAFE_DELETE_LIZ(mLizDir); 这
直接跳到了 info.filename = info.filename.substr (0, info.filename.length () - 1);这
闷死了,真不懂
newxdlysk 2010-07-24
  • 打赏
  • 举报
回复
那段应该是处理异常的代码了,没异常自然不会进去了
Erorr 2010-07-24
  • 打赏
  • 举报
回复
不能调试的时候,加点打印信息来跟踪程序
别人没有环境很难搞出来的
yutaooo 2010-07-24
  • 打赏
  • 举报
回复

OGRE_EXCEPT() 可能是个宏吧? 是否会throw异常? 程序是否会走到这个地方?
BullWeiHaiDong 2010-07-24
  • 打赏
  • 举报
回复
自己先顶一个

64,680

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧