Winapi 如何在调试我的发布模式二进制文件时中断PostMessage/PostThreadMessage中的at函数?

Winapi 如何在调试我的发布模式二进制文件时中断PostMessage/PostThreadMessage中的at函数?,winapi,debugging,release,mode,Winapi,Debugging,Release,Mode,我的应用程序启动后立即退出。这仅在发布模式构建时发生。我已经用符号表示了我的释放模式二进制文件。我怀疑某个次要线程正在将WM_QUIT发布到我们的队列中。我试图在条件消息=0x0012(WM_QUIT)的函数PostThreadMessage处中断。这个打不中。为了确定,我在PostMessage和SendMessage中使用了break at函数。不走运。有人能指出我是否遗漏了什么吗?对于WIN32 API的发布模式二进制文件,如何启用Break at函数 真诚地, Subramanian这通

我的应用程序启动后立即退出。这仅在发布模式构建时发生。我已经用符号表示了我的释放模式二进制文件。我怀疑某个次要线程正在将WM_QUIT发布到我们的队列中。我试图在条件消息=0x0012(WM_QUIT)的函数PostThreadMessage处中断。这个打不中。为了确定,我在PostMessage和SendMessage中使用了break at函数。不走运。有人能指出我是否遗漏了什么吗?对于WIN32 API的发布模式二进制文件,如何启用Break at函数

真诚地,
Subramanian

这通常发生在您的开关/案例中缺少
中断
,导致代码落入WM_QUIT处理程序。解决这个问题的第一步是向输出uMsg的WM_QUIT处理程序添加代码。这将告诉您WM_QUIT是否真的被发送了,或者它是否只是代码丢失

可以在发布的二进制文件中设置断点,但源代码与实际二进制文件的对应方式不太好,因此单步执行和其他调试功能变得不太有用


关于设置断点,请将其设置为
{,,user32.dll}_SendMessageA@16
{,user32.dll}_SendMessageW@16
取决于您是否使用Unicode。但是,这可能对您没有多大用处。

要设置断点,请使用
DebugBreak
API,这将导致程序崩溃。现在点击“调试”(根据您的操作系统而定)。它将带您到
DebugBreak
位置。还可以使用IDE调试发布版本


但是,除了断点之外,您的代码还存在一些逻辑问题。

您确保它不是一个错误的WM\u退出。很好,现在你可以找到真正的原因了。你为什么要在邮局破门而入来检查这一点?在信息泵中更容易检查。并不是说WM_QUIT将是您的问题。不完全正确,如果您启用了/DEBUG标志(Not_DEBUG宏),它将生成PDB文件。这样就可以调试发布模式的可执行文件。我已经找到类似这样的错误很多次了。