VC++单步调试出问题,请高手指点!

来源:百度知道 编辑:UC知道 时间:2024/06/30 10:10:27
单步调试时,到cout<<语句时,提示Please enter the path for ostrint.cpp,好像说没有这个文件,去除了cout<<,程序运行到mian的最后一个“}“时提示Please enter the path for CRT0.C

并且在组合窗口中显示
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
以前用VC的时候都没有这个问题,重装了VC N遍都还是这个问题,请高手帮忙!

这个不奇怪啊,是正常现象。通常你开发一款软件给别人用,但是你又不想让他知道你是怎么实现的,就是不想给他看你写的源代码,你就会只给他lib库或者是dll文件,而不会把源文件给他(这是我的心血啊,不付费我是不会给你源代码的!),这样别人在连接了你给的库,使用你提供的func函数时,它想要debug的时候step into你的这个func函数,就会报这样类似的错误,说无法定位到相应的文件,要你给出包含这个func函数的文件路径来,这样我VC才能打开这个文件,给你一步一步的执行func这里面的东西啊。所以同理,微软怎么会舍得把iostream的实现代码给你哦,你想看cout怎么执行的,抱歉,只有汇编语言可以看,源代码嘛,no way!所以你只能step over(F10)而不是step into。至于你执行到最后的“}”的时候,这时,我们自己编写的代码是完了,但是真正的VC还会做一些事情的,所以你是不能step over的。直接F5好了。这么解释希望你能大概理解下

首先,不是重装vc的问题。

vc中在单步调试时,有时会遇到库函数,这时候就不要f11步进了,如果步进的话会进入库函数内部的代码,而cout根本不是ntdll.dll和kernel32.dll的导出函数,所以编译器在这两个dll中当然找不到匹配的符号信息了。

所以,单步调试,遇到像cout,cin之类的C/C++库函数时,直接f10步过即可,毕竟你关心的只是自己的程序而不是cout是如何实现的对不。