Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

C/C++本地代码调试

帖子发起人: chena_cpp   发起时间: 2013-04-17 14:59 下午   回复: 7

Print Search
帖子排序:    
   2013-04-17, 14:59 下午
chena_cpp 离线,最后访问时间: 2012/12/21 8:18:23 chena_cpp

发帖数前100位
注册: 2012-12-21
发 贴: 11
用umdh来找内存增长,打开user mode stack trace database程序就运行不起来,为什么?
Reply Quote
程序退出的时候没有泄露,但是内存增长不正常,有隐式内存泄露。
想通过umdh来找,但是gflags /i myapp.exe _ust之后,程序就运行不起来了,停住不动了,也不crash。
这是为什么?

IP 地址: 已记录   报告
   2013-04-17, 22:23 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 用umdh来找内存增长,打开user mode stack trace database程序就运行不起来,为什么?
Reply Quote
上调试器,看停在哪
IP 地址: 已记录   报告
   2013-04-18, 17:16 下午
chena_cpp 离线,最后访问时间: 2012/12/21 8:18:23 chena_cpp

发帖数前100位
注册: 2012-12-21
发 贴: 11
Re: 用umdh来找内存增长,打开user mode stack trace database程序就运行不起来,为什么?
Reply Quote
谢谢。

我上调试器看了,是因为太慢了,因为我程序一开始运行的时候初始化了很多东西,new了几万次。
但是这些部分我知道没有泄露的,能不能动态的开关stack trace?我想等初始化完了再开始记录。

把heap block的usage设置成_CRT_USE_IGNORE,是不是就不记录了?

IP 地址: 已记录   报告
   2013-04-20, 20:10 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 用umdh来找内存增长,打开user mode stack trace database程序就运行不起来,为什么?
Reply Quote

通常是创建堆之前要启用,启用后不可以禁止。但可以以堆为单位来启用UST,一个进程内通常有很多个堆,如果你能确认有问题的堆,那么可以只对这个堆启用UST


IP 地址: 已记录   报告
   2013-04-22, 13:21 下午
chena_cpp 离线,最后访问时间: 2012/12/21 8:18:23 chena_cpp

发帖数前100位
注册: 2012-12-21
发 贴: 11
Re: 用umdh来找内存增长,打开user mode stack trace database程序就运行不起来,为什么?
Reply Quote
umdh能捕获到所有的内存分配吗?
我用umdh比较前后两次,发现只捕获到了9m的内存增长。
但是如果不开ust,这两次之间,内存增长了70m左右。

IP 地址: 已记录   报告
   2013-04-22, 20:54 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 用umdh来找内存增长,打开user mode stack trace database程序就运行不起来,为什么?
Reply Quote

UST监视的只是Win32堆,此外的内存分配还可能是直接调用VirtualAlloc,或者使用CRT的SBH堆(小块)等...


IP 地址: 已记录   报告
   2013-04-23, 09:03 上午
chena_cpp 离线,最后访问时间: 2012/12/21 8:18:23 chena_cpp

发帖数前100位
注册: 2012-12-21
发 贴: 11
Re: 用umdh来找内存增长,打开user mode stack trace database程序就运行不起来,为什么?
Reply Quote
谢谢了。
有没有工具能监视到所有的内存分配了?因为用到了一些不是自己写的库,所有靠自己写代码是不行了。


IP 地址: 已记录   报告
   2013-04-27, 15:50 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 用umdh来找内存增长,打开user mode stack trace database程序就运行不起来,为什么?
Reply Quote
建议要换一下思路,先定位一下大致的范围,然后再有针对性的找方案,最好不要尝试"全城戒严,全民搜索"...
IP 地址: 已记录   报告
高端调试 » 软件调试 » C/C++本地代码调试 » Re: 用umdh来找内存增长,打开user mode stack trace database程序就运行不起来,为什么?

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.