在c+中有方法吗+;不为项目的特定部分生成调试信息? 我最近用Visual C++与EGIN库一起工作,解决了一个非常大的稀疏线性系统。程序在发布模式下运行得非常快,但在调试模式下需要几个小时才能解决。我跟踪的时间,该程序需要很长的时间在“解决”本征函数。我想在调试模式下构建项目,因为我需要调试很多。现在有没有办法不为特征部分生成调试信息?或者这个问题还有其他解决方法吗?

在c+中有方法吗+;不为项目的特定部分生成调试信息? 我最近用Visual C++与EGIN库一起工作,解决了一个非常大的稀疏线性系统。程序在发布模式下运行得非常快,但在调试模式下需要几个小时才能解决。我跟踪的时间,该程序需要很长的时间在“解决”本征函数。我想在调试模式下构建项目,因为我需要调试很多。现在有没有办法不为特征部分生成调试信息?或者这个问题还有其他解决方法吗?,c++,visual-c++,visual-studio-2012,eigen,C++,Visual C++,Visual Studio 2012,Eigen,您可以禁用调试信息并对每个文件启用代码优化 在解决方案资源管理器中,右键单击包含Eigen函数的文件,然后选择属性 在出现的对话框中,选择C/C++->优化,并选择与发布模式相同的选项 然后选择C/C++->General,并在“调试信息格式”下选择“无”。但是调试信息的存在可能不会影响执行速度。@MichaelWalz的回答很好,但我想补充一点(正如我在对您的问题的评论中所概述的),我强烈建议不要在调试模式下使用Egen Eigen是一个高效但非常有用的矩阵库。它通过大量的“模板魔术”来实现其

您可以禁用调试信息并对每个文件启用代码优化

在解决方案资源管理器中,右键单击包含
Eigen
函数的文件,然后选择属性

在出现的对话框中,选择C/C++->优化,并选择与发布模式相同的选项


然后选择C/C++->General,并在“调试信息格式”下选择“无”。但是调试信息的存在可能不会影响执行速度。

@MichaelWalz的回答很好,但我想补充一点(正如我在对您的问题的评论中所概述的),我强烈建议不要在调试模式下使用Egen

Eigen是一个高效但非常有用的矩阵库。它通过大量的“模板魔术”来实现其效率,使用了许多抽象层,并依靠编译器的优化阶段来生成高效的代码

调试模式通常意味着编译器创建调试符号,但也禁用优化。在GCC/clang中,它通常相当于
-O0-g
;我相信在VisualStudio中,它对应于
/O0/DEBUG


我建议以“带调试信息的发布”模式构建所有使用Eigen的代码(CMake称之为
CMake\u BUILD\u TYPE=RelWithDebInfo
)。这意味着您允许编译器进行优化,同时仍生成调试符号。在GCC/clang中,这通常相当于
-O2-g
;我相信在VisualStudio中,它对应于
/O2/DEBUG
。就我个人而言,我有过非常好的经历;我知道只有在非常罕见的情况下才需要完全禁用优化。

问题与调试信息无关,而是优化设置。@teivaz是对的。Eigen是一个非常依赖优化器完成其工作的库。当我使用Egeng时,我总是在RelWithDebInfo模式下构建(使用CMake+gcc,这通常意味着
-O2-g
),而调试模式通常意味着
-O0
(无优化)。以智能方式测试您的程序™. 你会发现99.9%的bug都来自于一个精心挑选的小数据集,它的执行时间不到一分钟。仅在发布版本中测试运行数小时场景,该版本探索剩余的0.1%内存和执行时间限制。如果你的程序现在不能像那样扩展,那么就让它扩展,一个无法调试的程序是你永远无法发布的。