如果在VisualStudio中的某行旁边放置断点,使用自定义工具生成项目,并运行配置的VS调试器,则调试器如何知道可执行文件中的哪一“行”属于源代码中的断点行?因为编译器可能会在制作可执行文件之前优化代码。
wj8zmpe11#
因为编译器可能会在制作可执行文件之前优化代码。不,这是一个可扩展构建和一个发布构建之间的巨大差异。一个调试版本将包含许多关于你的程序的额外信息,而不是执行你的程序所必需的信息。特别是所有的名称、类、函数和变量都在调试版本中。编译器构建是将构建的程序与您编写的代码进行几乎1对1的Map。您会发现调试优化的程序与调试调试版本有很大的不同。当你发现一个bug只在优化的发布版本中表现出来时,你就有了一个难题,需要再煮一壶咖啡。
1条答案
按热度按时间wj8zmpe11#
因为编译器可能会在制作可执行文件之前优化代码。
不,这是一个可扩展构建和一个发布构建之间的巨大差异。
一个调试版本将包含许多关于你的程序的额外信息,而不是执行你的程序所必需的信息。特别是所有的名称、类、函数和变量都在调试版本中。编译器构建是将构建的程序与您编写的代码进行几乎1对1的Map。
您会发现调试优化的程序与调试调试版本有很大的不同。
当你发现一个bug只在优化的发布版本中表现出来时,你就有了一个难题,需要再煮一壶咖啡。