gpt4 book ai didi

windows - 如何在 Windows 上获取线程堆栈信息?

转载 作者:可可西里 更新时间:2023-11-01 12:46:25 24 4
gpt4 key购买 nike

我通过 CreateToolhelp32Snapshot 函数枚举进程中的所有线程。我想获得每个线程的一些基本堆栈信息。更具体地说,我想获得堆栈底部地址,如果可能的话,我想获得当前堆栈顶部地址。基本上这是在 WinDbg 中用 ~*k 命令显示的信息。那么如何从线程的ID或HANDLE中获取堆栈信息呢?

最佳答案

(可以找到定义 here .)

获取堆栈边界:

THREAD_BASIC_INFORMATION basicInfo;
NT_TIB tib;

// Get TEB address
NtQueryInformationThread(YOUR_THREAD_HANDLE, ThreadBasicInformation, &basicInfo, sizeof(THREAD_BASIC_INFORMATION), NULL);
// Read TIB
NtReadVirtualMemory(YOUR_PROCESS_HANDLE, basicInfo.TebBaseAddress, &tib, sizeof(NT_TIB), NULL);
// Check tib.StackBase and tib.StackLimit

要获取 esp 的值,只需使用 GetThreadContext

关于windows - 如何在 Windows 上获取线程堆栈信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3918375/

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