我需要知道汇编来调试用C编写的程序吗?

时间:2011-10-06 07:06:44

标签: c debugging assembly

我正在学习C语言“C语言程序设计”,第2版,并且每个练习也都在学习。

我是否需要了解汇编以调试我编写的C程序作为书籍练习的解决方案?

另外,您推荐使用哪种调试器?

8 个答案:

答案 0 :(得分:5)

你不需要知道用C编程的程序集,包括调试。但是,如果你知道装配,那么C开始变得很有意义;它有一些组装概念(最好是几个不同架构上的一些概念,如x86和ARM),而不仅仅是用于调试。

答案 1 :(得分:2)

这不是必需的,但有时非常有帮助。如果您正在使用MSVC ++,只需使用IDE中的那个,它也可以显示反汇编。

答案 2 :(得分:2)

不,你不需要知道装配就可以学习C.

就调试器而言,最简单的选择可能是使用您正在使用的IDE内置的调试器。在Windows上,Microsoft Visual Studio很受欢迎(有free version)。 Eclipse是另一种流行的选择,可以在许多平台上使用。

还有命令行调试器,例如gdb,但它们比基于GUI的调试器更难开始。

答案 3 :(得分:1)

为了逐步调试,了解程序集可能会有所帮助,但不是必需的。如果真的有必要,它还取决于调试器。

但是还有其他方法来调试程序,例如将printf()电话放在战略位置。

答案 4 :(得分:1)

不,asm不是必需的,但有帮助的,就像其他人所说的那样,使用调试器......其他人没有说过,是你甚至可以使用GDB,但一定要禁用编译器优化或调试可能很难。

答案 5 :(得分:1)

使用GCC -g2-g3标志进行编译时,可以使用GDB调试程序。在这里,您可以找到如何使用GDB http://cs.baylor.edu/~donahoo/tools/gdb/tutorial.html的简短教程,在这里您可以找到更广泛的教程http://www.delorie.com/gnu/docs/gdb/gdb_toc.html

答案 6 :(得分:1)

如果要调试自己的程序,则无需学习汇编。编译器可以将源代码信息嵌入到可执行文件(带有GCC的-g标志)中,或嵌入到文件(/Z带有MSVC的标志族中)。

调试器入门并不难(即使你使用命令行),互联网上到处都有很多资源。这项投资将为您带来最大回报。

尽管如此,掌握汇编语言有时可能会有用。当您想要检查某些优化的执行方式时,有时(很少)需要查看编译器生成的程序集。但除非你有一份非常具体的工作,否则你不应该担心这一点。

答案 7 :(得分:0)

不,你没有。 Microsoft Visual Studio有一个很好的调试器。其他选项包括Code::BlocksEclipse

相关问题