我正在使用Visual Studio 2015 Update 3,我有一个非常简单的纯Win32控制台C ++“Hello World”,除了做实验之外没有任何其他目的:
int main()
{
printf("Hello world");
char *test = (char*)malloc(100);
}
如果项目使用多线程DLL运行时库(Project Properties-> Configuration Properties-> C / C ++ / - >运行时库:多线程),我无法进入malloc
调试DLL(/ MDd))。
但是当我将此设置更改为多线程调试(/ MTd)时,步入malloc
工作正常。
但步进信息printf
始终正常。踏入我自己的代码也总能正常工作。
有没有办法启用步进运行时库DLL?
答案 0 :(得分:6)
ucrtbased.dll build 10.0.10240.0的符号发布到符号服务器时出错;未经剥离的符号(带有源信息)最初发布到符号服务器,但后来在发布剥离的符号时被覆盖。
我们已解决此问题并重新发布未解除的符号。如果您现在尝试从符号服务器下载此DLL的符号,则应获取未提取符号。
如果您已经下载了剥离的符号,则需要从符号缓存中删除它们,以便调试器考虑重新下载未剥离的符号。在Visual Studio中,转到Tools =>选项,调试=>符号。那里有一个文本框,“在此目录中缓存符号”。关闭Visual Studio。在Windows资源管理器中打开该目录并搜索“ucrtbased”。删除搜索出现的所有PDB文件。
答案 1 :(得分:1)
安装Windows 10 SDK
(它还会在ucrtbased.dll
中更新System32
作为副作用)。