Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 可以配置C/C++;查看程序集的内联函数?_C++_C_Profiling_Inline_Disassembly - Fatal编程技术网

C++ 可以配置C/C++;查看程序集的内联函数?

C++ 可以配置C/C++;查看程序集的内联函数?,c++,c,profiling,inline,disassembly,C++,C,Profiling,Inline,Disassembly,我想衡量我在项目中使用的一些内联函数的性能和一般行为(创建了多少程序集等)。除了评测计时之外,还可以查看使用那些内联函数的函数的过度代码扩展吗 我在Visual C++和MingW(通过NETBeanes)中尝试调试过程中的反汇编面板。通过调试构建,每个内联函数在程序集中使用调用,因此它们不是内联函数。如果我激活了优化,程序集会发生很大的变化,我甚至不能在这些函数中设置断点 您是否知道任何编译器设置(例如,在GCC或VC中,只是优化内联函数)、书籍(我有“高效C++”,其中谈到内联测量计时)或其

我想衡量我在项目中使用的一些内联函数的性能和一般行为(创建了多少程序集等)。除了评测计时之外,还可以查看使用那些内联函数的函数的过度代码扩展吗

我在Visual C++和MingW(通过NETBeanes)中尝试调试过程中的反汇编面板。通过调试构建,每个内联函数在程序集中使用调用,因此它们不是内联函数。如果我激活了优化,程序集会发生很大的变化,我甚至不能在这些函数中设置断点


您是否知道任何编译器设置(例如,在GCC或VC中,只是优化内联函数)、书籍(我有“高效C++”,其中谈到内联测量计时)或其他更好地理解该主题的内容

这里是VS中编译器开关的链接。如果您只想内联测试,请启用此优化

像“英特尔VTune”这样的工具可以评测内联函数。他们使用二进制文件中的调试信息将指令指针映射回函数“从中派生代码”,即使程序集中不再有实际的
调用

在使用一些工具查看带注释的程序集时,您也可以看到这种效果——几个函数的源代码将混合在一起,这反映了内联


这个过程并不完美,因为对于某些类型的内联,“这个特定指令属于什么功能”几乎变成了一个哲学上的过程,而不是一个技术上的过程(实际上,指令可能在多个函数之间有效地“共享”)

我已经尝试过了,但它告诉我这与/ZI选项不兼容。哪种调试信息类型更可取?/ZI用于调试模式。无论如何,您都不想在调试模式下检查性能。您必须在发布模式下执行此操作。我理解,但如何在发布版本中查看程序集信息(即调试信息)?我的意思是查看函数和它们的汇编代码之间的响应。