提问人:jokey 提问时间:10/3/2023 最后编辑:jokey 更新时间:10/4/2023 访问量:84
C++ 调试器如何知道如何在源和可执行文件之间映射行?
How C++ debugger knows how to map lines between source and executable?
问:
如果在 VisualStudio 中的一行旁边放置一个断点,使用自定义工具生成项目,然后运行配置的 VS 调试器,调试器如何知道可执行文件中的哪一行属于源代码中的断点行?因为编译器可能会在制作可执行文件之前优化代码。
答:
4赞
Captain Giraffe
10/3/2023
#1
因为编译器可能会在制作可执行文件之前优化代码。
不,这是 Debug 版本和 Release 版本之间的很大区别。
调试版本将包含许多有关程序的额外信息,而不是执行程序所需的信息。具体而言,所有名称、类、函数和变量都在调试版本中。调试版本将构建的程序映射到您编写的代码中,几乎是 1 对 1 的对应关系。
您会发现调试优化程序与调试调试版本有很大不同。
当你发现一个只在优化的发布版本中表现出来的错误时,你就会遇到一些难题,需要再喝一壶咖啡。
评论