Pie*_*ter 2 c++ visual-studio-2010
我通常使用Qt Creator来满足我的C++需求.当我的程序中的断言失败时,它可以告诉我哪个断言失败了.在Visual Studio中,我只看到这个:
我可以单击"重试"跳转到应用程序,但它不会告诉我哪个断言失败了.即使是一个简单的assert(false)
Visual Studio试图向我展示msvcr100d.dll的源代码,这是不可用的.
如何找出程序中的哪个断言失败?我真的不想使用断点和std::cout
s 的组合进行繁琐的手动搜索,以便自动跟踪.
编辑:Visual Studio确实.PDB
为我生成了一个文件,但它仍然无法正常工作.虽然调试器不会突出显示失败断言的行,但我确实看到断言失败:false,文件main.cpp,命令行上的第8行.为什么它不能只显示我的行并让我检查变量?我的意思是,所有信息似乎都可用......
您只需单击"重试"即可使用调试器进入应用程序的源代码.这将突出显示包含失败的断言的行,因此除非您想将多个嵌套断言塞入单行,否则很容易看到罪魁祸首.如果你这样做,那么你应该得到这可能导致你的所有痛苦.
它现在不适合您的原因很可能是因为您没有应用程序当前版本中提供的调试符号.使用与Visual Studio捆绑在一起的编译器构建应用程序时,根据项目设置,它将生成一个.PDB
包含调试符号的文件.这些是在调试时获取有用信息所必需的,例如产生上次故障的行.
确保在编译应用程序时将其设置为生成调试符号.您应该.PDB
在/ bin目录中看到一个文件.如此处所讨论的,调试符号的生成与是否启用优化(通常称为"释放"的配置)正交.
更新:我刚刚意识到你可能在Qt Creator中编译/构建应用程序,然后尝试从Visual Studio调试二进制文件.这不会很好 - 如果你不使用VS的工具编译,它不会生成VS调试器可以读取的调试符号.
我假设问题反过来相同:如果你使用Visual Studio构建,然后尝试使用Qt Creator进行调试,它也可能无法解释调试符号.
因此,我建议坚持使用单个工具集进行构建.使用哪个IDE无关紧要,但您需要使用相同的工具进行编译/构建.您可以配置Qt Creator或Visual Studio以使用与另一个捆绑的编译器和链接器.通常Qt Creator附带一个GCC的Win32端口,但是使用Microsoft的工具集来构建它是微不足道的,这将允许您使用VS来调试代码.