Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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++_Compiler Construction_Binary - Fatal编程技术网

C++ 如何检查C++;编译程序?

C++ 如何检查C++;编译程序?,c++,compiler-construction,binary,C++,Compiler Construction,Binary,就像在主题中一样-是否有任何软件要打开(什么?),而在这里我甚至不知道要打开什么-带有目标代码或exe的文件? 我今天的问题(如果只是今天)可能看起来有点奇怪,但是我正在通过B.S的“C++编程语言”的摘录,有时我只停留在特定的问题上。我有时会对这本书的风格感到有点恼火(在许多方面都很出色),他(理学学士)问了一些你们在他的书中找不到答案的问题,关于如何做,甚至从哪里开始。 比如这个: 运行一些测试,看看编译器是否真的使用指针和索引为迭代生成等效代码。如果可以请求不同程度的优化,请查看这是否以及

就像在主题中一样-是否有任何软件要打开(什么?),而在这里我甚至不知道要打开什么-带有目标代码或exe的文件? 我今天的问题(如果只是今天)可能看起来有点奇怪,但是我正在通过B.S的“C++编程语言”的摘录,有时我只停留在特定的问题上。我有时会对这本书的风格感到有点恼火(在许多方面都很出色),他(理学学士)问了一些你们在他的书中找不到答案的问题,关于如何做,甚至从哪里开始。 比如这个:

运行一些测试,看看编译器是否真的使用指针和索引为迭代生成等效代码。如果可以请求不同程度的优化,请查看这是否以及如何影响生成代码的质量

这是第五章第八个问题。到目前为止,本书中还没有提到测试和分析编译器生成的代码。 不管怎样,如果有人能帮我,我会非常感激的。
谢谢。

调试器将帮助您。大多数调试器允许您停止程序并查看反汇编。很好的一点是,它们直接指向您设置断点的行的反汇编,而不仅仅指向所有编译结果


偶尔在VisualStudio中这样做——编译程序,将断点放到感兴趣代码的开头,启动程序,然后当它停止时,打开解体并立即看到对应于C++代码的代码。< /P> < P>调试器将帮助您。大多数调试器允许您停止程序并查看反汇编。很好的一点是,它们直接指向您设置断点的行的反汇编,而不仅仅指向所有编译结果


偶尔在VisualStudio中这样做-编译程序,将断点放到感兴趣代码的开头,启动程序,然后当它停止时,打开解体并立即看到对应于C++代码的代码。< /P> < P>可以生成许多“列表”它们在编译期间生成的汇编代码的文件,中间穿插着来自C源代码的语句。此外,还有一些工具可以反汇编对象和可执行文件


显然,这些工具的实际激活方式取决于您的工具链。

许多编译器可以生成编译过程中生成的汇编代码的“列表”文件,其中夹杂着C源代码中的语句。此外,还有一些工具可以反汇编对象和可执行文件


显然,这些工具的实际激活方式取决于您的工具链。

如果您使用的是g++,您可以执行
g++-S main.cpp
。这将在名为
main.s
的文件中输出程序集。但是,如果您感兴趣的函数分布在不同的
.cpp
文件中,那么对最终的可执行文件执行
objdump
可能更方便


还有一个很好的工具,名为pretty,它将objdump输出打印为HTML,将各种函数调用和跳转连接起来。

如果您使用的是g++,您可以执行
g++-s main.cpp
。这将在名为
main.s
的文件中输出程序集。但是,如果您感兴趣的函数分布在不同的
.cpp
文件中,那么对最终的可执行文件执行
objdump
可能更方便


还有一个很好的工具,名为pretty,它将objdump输出打印为HTML,将各种函数调用和跳转连接起来。

谢谢。以及为什么这里的评论必须至少有15个字符长。我只是想说声谢谢,但它不会让我这么做的。可惜+1.编程新手并不总是意识到调试器的有用性,尤其是在学习编程的时候。谢谢。以及为什么这里的评论必须至少有15个字符长。我只是想说声谢谢,但它不会让我这么做的。可惜+1.编程新手并不总是意识到调试器的有用性,尤其是在学习编程的时候。