C++ 是否可以获取内部调用SendMessage或其他锁定API的WinAPI列表?

C++ 是否可以获取内部调用SendMessage或其他锁定API的WinAPI列表?,c++,c,windows,multithreading,winapi,C++,C,Windows,Multithreading,Winapi,我面临的任务是找出是什么导致我们的生产应用程序偶尔将其主/GUI线程锁定在最终用户的机器上。不幸的是,此错误的间歇性以及无法在该环境中安装和运行任何调试/跟踪工具,使得查找原因变得更加困难。当前的方法是尝试在可能的锁定API周围放置跟踪,并查看哪个API可能导致锁定 有鉴于此,我很好奇,是否有一个WinAPI列表可以在内部调用或锁定WinAPI?(我认为这可能是主线程死锁的主要原因。) 另外,我已经检查了以下可能与锁定有关的内核API:WaitForSingleObject、WaitForMul

我面临的任务是找出是什么导致我们的生产应用程序偶尔将其主/GUI线程锁定在最终用户的机器上。不幸的是,此错误的间歇性以及无法在该环境中安装和运行任何调试/跟踪工具,使得查找原因变得更加困难。当前的方法是尝试在可能的锁定API周围放置跟踪,并查看哪个API可能导致锁定

有鉴于此,我很好奇,是否有一个WinAPI列表可以在内部调用或锁定WinAPI?(我认为这可能是主线程死锁的主要原因。)


另外,我已经检查了以下可能与锁定有关的内核API:WaitForSingleObject、WaitForMultipleObjects等,它们在应用程序中使用过,并且都已签出。

IME,在其他API调用或我见过的任何GUI组件中,没有对任何其他线程的隐藏“SendMessage”调用。但是,对GUI线程的递归SendMessage()调用在可视化组件方法/成员函数中很常见。当然,您没有从主线程调用WFSO、WFMO,是吗?SendMessage()没有“锁定”。它本质上只是一个调用窗口过程的过程调用。任何锁定都在您自己的代码中。当您获得死锁时,让客户端创建一个转储文件。然后你可以在VS中加载这个转储文件并调试它。@DavidHeffernan:谢谢。有没有方法可以从我的C++代码自动创建一个转储?如果程序死锁,那么代码就不好了。从例如Process Explorer创建转储。