gpt4 book ai didi

debugging - 为什么在启用用户模式堆栈跟踪时没有获得完整的堆栈跟踪?

转载 作者:行者123 更新时间:2023-12-01 02:44:23 26 4
gpt4 key购买 nike

我正在对一些内存碎片问题进行故障排除,并且我一直在试图弄清楚为什么要分配事物以及最终由谁进行分配。因此,我为该进程启用了用户模式堆栈跟踪(gflags 中的 +UST 标志)并获得了转储。当我分析转储并使用 !heap -p -a Some_Address 时。我看到了一个堆栈跟踪,但它绝对不是一个完整的跟踪。我通常只在跟踪中看到 4-7 个函数,然后它就会停止。堆栈中没有报告错误,但不幸的是它没有足够的信息。我检查了一堆分配,它们似乎都有同样的问题。我认为这可能是堆栈数据库的大小,但我原以为会丢失整个条目,而不仅仅是丢失其中的一部分。我可以做些什么来增加可见堆栈的总大小。下面是我看到的堆栈的一些示例。

0:000> !heap -p -a 3cb49008
address 3cb49008 found in
_HEAP @ 80000
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
3cb49000 0fdd 0000 [07] 3cb49008 07ed0 - (busy)
Trace: 6b69
7c855014 ntdll!RtlAllocateHeapSlowly+0x00000041
7c83d9aa ntdll!RtlAllocateHeap+0x00000e9f
776bcfce ole32!CRetailMalloc_Alloc+0x00000016
77d0404a oleaut32!APP_DATA::AllocCachedMem+0x0000004f
77d04341 oleaut32!SysAllocStringByteLen+0x0000003c
77d03f9b oleaut32!ErrStringCopyNoNull+0x00000016
77d0456f oleaut32!VariantCopy+0x0000007e
3ff1946 xxxx!_variant_t::_variant_t+0x00000016


0:000> !heap -p -a 2774cfc8
address 2774cfc8 found in
_HEAP @ 3cc0000
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
2774cfc0 0008 0000 [17] 2774cfc8 00020 - (busy)
Trace: 7de8
7c855014 ntdll!RtlAllocateHeapSlowly+0x00000041
7c83d9aa ntdll!RtlAllocateHeap+0x00000e9f
4f6ad17 xxxx!malloc+0x0000007a


0:000> !heap -p -a 3ca25e08
address 3ca25e08 found in
_HEAP @ 80000
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
3ca25e00 0007 0000 [07] 3ca25e08 00020 - (busy)
Trace: 8588
7c855014 ntdll!RtlAllocateHeapSlowly+0x00000041
7c83d9aa ntdll!RtlAllocateHeap+0x00000e9f
776bcfce ole32!CRetailMalloc_Alloc+0x00000016
77d0404a oleaut32!APP_DATA::AllocCachedMem+0x0000004f
77d04341 oleaut32!SysAllocStringByteLen+0x0000003c
77d03f9b oleaut32!ErrStringCopyNoNull+0x00000016
77d0456f oleaut32!VariantCopy+0x0000007e
4f35abd xxxx!std::_Construct<_variant_t,_variant_t>+0x0000004d

最佳答案

在 32 位 Windows 上,系统使用 EBP 链进行堆栈跟踪。您需要禁用 FPO 优化 ( /Oy- )。在 64 位 Windows 上,即使进行了优化,您也将获得良好的堆栈跟踪。

关于debugging - 为什么在启用用户模式堆栈跟踪时没有获得完整的堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7322921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com