我有一个非托管应用程序," A",它在运行时表现出奇怪的行为。 " A"是一个MSVC ++项目(没有CLR支持),它调用DLL项目," B"。 " B"是另一个支持CLR的MSVC ++项目:
void LoggerPost(DWORD dwSeverity, LPTSTR szAppID, LPTSTR szMsgString)
{
UnmanagedLoggerClient::LogMessage(dwSeverity, szAppID, "", szMsgString);
}
上述方法,从" A"调用,调用" B"中的LogMessage函数。此调用最初起作用,但随着时间的推移,该方法在此DLL上被更频繁地调用,并最终对此方法的调用停止返回。结果,我试图找出LogMessage方法中是否存在死锁。我尝试调试项目" A"通过将调试器附加到它。令我惊讶的是,我发现踩到LogMessage函数不起作用!我似乎无法进入它。我在同一目录中为两个项目都安装了PDB,并且确保了" Just My Code"的调试选项。已经关闭,但无济于事。现在我想弄清楚如何在运行时闯入这个方法调用...任何想法?
答案 0 :(得分:0)
当附加调试器(Debug - > Attach to Process)时,它显示“Attach to:”我必须点击“Select ...”按钮 - >勾选“调试这些代码类型:” - >选择Managed(v4.5,v4.0),Native和Managed Compatability Mode,然后附加到进程以便能够通过其调用进行调试。