关于release版本的问题

KingKing555 2008-03-22 06:39:09
如何在Release版本(windows或者linux)中查找以下问题,
a 内存泄漏
b 段错误导致非法操作
c 程序CPU占用100%
...全文
119 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
KingKing555 2008-03-22
  • 打赏
  • 举报
回复
还有一个问题:
就是在一个多线程高度并发的应用系统中访问关键资源时(如公共缓冲区)过多的使用锁会导致性能下降,请问有什么办法可以减少或者避免锁的使用呢?

希望大家来讨论讨论
arong1234 2008-03-22
  • 打赏
  • 举报
回复
a在debug和release版本都没有好办法查,需要得是经验和耐心
b,c需要使用诸如windbg(windows)gdb之类的调试工具。只要有符号文件(pdb文件),就可以自动解析出出问题的代码。不过windbg的使用还是蛮难的,没一两年的经验估计也搞不定,还得有高人指点

总之调试都不容易,不会有1,2,3,4...这样简单易行的步骤的
野男孩 2008-03-22
  • 打赏
  • 举报
回复
windows:

a.查内存泄漏可以借助于debug版运行库的内存调试函数。Release的话,如果内存泄漏的严重,那挺好的。等到内存占用到1.4G,1.5G以上了,在代码里面随机的dump一段内存出来分析数据。或者另外起一个程序去读内存泄漏进程的内存块。随即的抽取一些内存就行了。因为1.5G内存的泄漏,说明大部分内存里面的数据都是你泄漏的对象占用了。好好分析分析数据。

b.段错误应该就是windows下的内存访问违例。重新编译程序,编译项加上map文件生成选项。根据内存访问的错误地址定位出错代码行。有些错误是没法这么弄的,比如堆栈中的返回地址被破坏,比较难查。需要经验+运气。

c.死循环!每个循环仔细过一遍。

64,637

社区成员

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

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