![]() |
1
11
尽管某些ASM知识在调试过程中有时会非常有用,但在您的情况下,可能需要做的一件更有价值的事情是 正确获取调试符号 .
如果GCC通过
最后,但不是最不重要的,如果你在Windows上,考虑下载调试符号来调试它们的二进制文件,因为它可能会让你的生活变得更美好。 很多 更容易的。在这里找到: microsoft site |
![]() |
2
5
听起来好像控件跳入了一个库,而这个库的源代码不是您所拥有的,或者不是用调试信息构建的。 至少熟悉机器的体系结构和汇编语言是有帮助的,但是严格来说,很好地使用调试器并不是必需的。 |
![]() |
3
2
对。为了优化调试,您必须理解汇编,它只不过是处理器所说的语言。 这并不可怕。编程语言不会比程序集简单。 |
![]() |
4
2
您不必是汇编方面的专家,但我认为理解汇编代码对于调试很重要。找到一些“刚好可以通过的程序集”教程,例如 this one . |
![]() |
5
1
Windows上的Visual Studio或 Data Display Debugger 在UNIX将提供一个非常体面的工作,只要你用调试符号编译,让你在不知道汇编程序的情况下通过C++代码。熟悉手持式计算机体系结构,基本理解ASM语法,以及C++如何构造映射,这将使您得到更进一步的理解。 |
![]() |
6
0
您不需要理解汇编程序来进行有效的调试。唯一一次真正需要担心的是程序集代码是当您遇到优化问题时,但是即使这样,您最好处理高级代码,而不是尝试编写更高效的程序集例程。 |
![]() |
7
0
你的平台是什么?VS2010将大大提高调试经验。 |
![]() |
8
0
C++不需要应用程序来存储元数据来帮助调试。如果找不到这样的元数据,那么调试器就没有太多的工作要处理。它所看到的只是正在执行的机器代码,因此它必须返回到向您显示普通的汇编代码。 但是,编译器通常能够构建调试器可以使用的调试信息。这些基本上告诉编译器源代码看起来是什么(或者在哪里找到源文件),哪些指令与源代码的哪行匹配,允许您调试所编写的实际C++代码。 您没有指定使用哪种编译器或调试器,所以我不能告诉您如何在特定情况下使用它。
在gcc上,必须使用
在VisualStudio中,它只适用于大多数情况下(虽然我相信如果您启动一个“空C++项目”),您就必须在项目属性中启用调试信息。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 5 月前 |