CB *_*ley 11
gdb它不是理解代码的工具,它是一种低级调试工具.特别是在较大的项目中使用C++作为更高级别的语言时,在调试器中逐步调试代码并不容易.
如果你认为智能指针和设计模式是"复杂的东西",那么我恭敬地建议你研究它们的使用,直到它们看起来并不复杂.它们应该被用来使事情变得更简单,而不是更复杂.
虽然程序代码可能很容易理解,但使用面向对象的设计主体可以提供构建一个非常大的项目所需的抽象,而不会变成不可维护的意大利面条.
对于大型项目,阅读代码比运行调试器更重要.如果函数在多态基类上运行,那么您需要阅读代码并了解它正在执行的抽象操作.如果派生类的行为存在问题,那么您需要查看覆盖以查看它们是否与基类合同一致.
当且仅当您对调试器可以回答的特定情况有特定问题时,您应该在调试器中单步执行代码.问题可能类似于"是否正在调用此覆盖函数?".这可以通过在overriden函数中放置一个断点并逐步调用您认为应该调用overriden函数以查看断点是否被命中来解决.