当前位置: 首页 > 面试题库 >

是否可以在正在运行的Python程序中放置一个断点,该断点会落入交互式终端?

涂煌
2023-03-14
问题内容

我不确定我要问的内容是否完全可能,但是由于python是一个解释器,所以可能是可能的。我正在尝试在一个开源项目中进行更改,但是由于python中没有类型,因此很难知道变量作为数据的含义以及它们的作用。您不能只查找有关var类型的文档,因为不能确定它是什么类型。我想放到终端,以便可以通过键入help(var)或print(var)快速检查变量的类型及其作用。我可以通过更改代码然后每次重新运行程序来做到这一点,但这会慢得多。

假设我有一个程序:

def foo():
    a = 5
    my_debug_shell()
    print a

foo()

my_debug_shell是我要询问的功能。它将把我放到python解释器的’>>>’外壳中,我可以在其中键入help(a),它会告诉我a是一个整数。然后,我输入“
a = 7”和一些“ continue”命令,程序继续打印7,而不是5,因为我更改了它。


问题答案:

http://docs.python.org/library/pdb.html

import pdb
pdb.set_trace()


 类似资料:
  • 我有一个由几千个类组成的大项目。今天,我发现对于某些输入,在启用断言的情况下运行时会计算出不同的结果。 null

  • 问题内容: 在Python脚本中,是否有任何方法可以判断解释器是否处于交互模式?这将很有用,例如,当您运行交互式Python会话并导入模块时,将执行略有不同的代码(例如,关闭日志记录)。 我已经看过判断python是否处于-i模式并在那里尝试了代码,但是,该函数仅在使用- i标志调用了Python的情况下才返回true,而在用于调用交互模式的命令没有参数时则返回true 。 我的意思是这样的: 问

  • 问题内容: 有没有办法在给定类的所有方法上设置断点? 我有一个庞大的(2300行)旧式类,我需要在所有方法调用上设置断点以了解这种混乱的工作方式。 问题答案: 我发现了解决方法: 1.我将“ Toggle Brakepoint”热键设置为+ 。 2.之后,您可以单击第一种方法 。3.使用“切换制动点” 4. + -转到“下一方法”。(+ -转到上一个方法。) 5.重复3步。

  • 方法一: $ strip a.out $ readelf -h a.out ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's compl

  • 我听说在内联元素中放置块元素是一种HTML错误: 但是如果在样式表中将外部锚点样式设置为,会怎么样?还是错了吗?块级和内联元素的HTML 4.01规范似乎是这样认为的: 样式表提供了指定任意元素呈现的方法,包括元素呈现为块还是内联。在某些情况下,例如列表元素的内联样式,这可能是合适的,但一般来说,作者不希望以这种方式覆盖超文本标记语言元素的传统解释。 有没有人对这个问题有进一步的建议?

  • 问题内容: 假设我有一个IPython会话,从中调用一些脚本: 有没有一种方法可以引入断点,从中可以从IPython检查工作区? 我记得在以前的IPython版本中可以做到这一点: 但是该子模块似乎不再可用。 假设我已经打开了IPython会话: 如何在我选择的位置停止程序并使用IPython检查我的工作区 ? 通常,我更喜欢不需要我预先指定行号的解决方案,因为我希望上面有多个这样的调用,而不必跟

  • 问题内容: 在Java中设置断点如何工作?它仅基于源文件名和行号吗?类或方法名称是否也存在? 如果调试器中有旧版本的源代码并设置了断点,则逐步执行时光标会关闭。距离有多远?它会进入错误的方法中吗(如果该文件中有多个类,甚至是错误的类)? 当JVM中有多个同名的类时,会发生什么情况(如果您有多个类加载器,可能会发生这种情况)?他们都得到断点了吗? 在Web应用程序容器中,是否可以仅为一个Web应用程

  • 我有一个Java8/Spring Boot/Maven应用程序,可以在IntelliJ IDE中运行。当我点击绿色箭头(右上角)时,控制台显示,一切都没有问题地启动,我可以在浏览器中使用应用程序,通过curl点击endpoint等。 有什么好看的吗?我需要设置一些不同的/特殊的东西来使调试工作吗?提前谢了。