在Python中,您可以在代码中使用pdb.set_trace()来在代码到达该点时启动pdb调试器,而无需处理调试器或断点。是否有类似于gdb或任何其他调试器的go等价物?我看到了https://golang.org/doc/gdb#Naming,但我不知道如何以同样的方式应用它。
不,没有这样的等效物。Python本质上是解释执行的1,而pdb
只是Python运行实例的一部分,因此在Python中更容易实现。
但是,一旦您在gdb或dlv下运行,设置某个已知函数的断点并不难。从您想要进入调试器的位置调用该函数将使您进入调试器。因此,不要使用pdb.set_trace
,只需调用debugging.Stop()
并编写一个debugging
包含一个仅返回的Stop
函数。在那里设置断点并运行程序。
1Python理论上可以编译或JIT,但由于语言的极度动态性(例如方法调用),这往往不如其他语言有效。为语言添加一些小限制(其中没有任何使其不可用的限制)将使编译成快速代码变得更加容易。有关详细信息,请参见Python 3解释器是否具有JIT功能?(消除全局解释器锁定也会有很大回报,但这也很困难:请参见PyPy FAQ。)