如何让VSCode单步执行脚本内Python语句(Mac系统)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让VSCode单步执行脚本内Python语句(Mac系统)相关的知识,希望对你有一定的参考价值。

参考技术A 在写脚本的阶段,需要一步一步运行、检查、调试。用惯了Spyder和RStudio之后,更加习惯了快捷键单步执行语句。当按下某组快捷键时,希望编辑器应该做两个动作:1.运行这行命令;2. 光标自动跳到下一行。

最终在这里找到了解决方案: https://stackoverflow.com/questions/58404225/vs-code-move-to-next-line-on-run-ctrl-enter

按步骤说一下:

4)把这段话放keybindings.json里面 :
      "key": "cmd+e" 是我自定义的快捷键,自己改自己想用的。

设置好之后重新打开VSCode,打开一个 .py 脚本,就可以按快捷键企图单步运行了。第一次按会唤醒交互窗口,之后就两个窗口一左一右,运行和调试起来很方便!

Python PDB 与命令输出不一致 - 下一条语句未输出

【中文标题】Python PDB 与命令输出不一致 - 下一条语句未输出【英文标题】:Python PDB inconsistency with command outputs - next statement not outputting 【发布时间】:2016-05-11 16:29:36 【问题描述】:

我正在尝试单步执行我一年多前编写的一些代码的 python 脚本。我记得的方式是,当您编写 pdb.set_trace() 行时,程序将在该点停止执行并打印将要执行的下一行。输入 'n' 或 's' 将使执行前进一行(并且可能步入一个函数,与我的问题不太相关)并打印下一行以再次执行。

现在,我有一个程序“example1.py”,它没有打印下一条要执行的语句。我只是得到如下输出

 ./example1.py
 > /home/some/example1.py(44)create()
 (Pdb) s
 > /home/some/example1.py(45)create()
 (Pdb) s
 --Call--
 > /home/some/example1.py(90)parse()

但是当我用一个不同的 python 程序“example2.py”尝试同样的事情时,我最近编写的一个我得到了我期望的输出(下一个要执行的语句。)

> /home/some/example2.py(86)random_update()
-> DATE_LIMIT=1
(Pdb) n
> /home/some/example2.py(87)random_update()
-> FILE_LIMIT=120
(Pdb) n
> /home/some/example2.py(89)random_update()
-> n_dates=0

我不知道这可能是什么原因。 import 语句会干扰 pdb 的执行吗?

更新: 所以我在切换到我的主目录之外的目录之前设置了我的跟踪断点。当我这样做时,我得到了我期望的输出。我注意到该目录的组所有者是 root,所以我将其更改为我的用户。这并没有解决我的问题,但现在我知道它与程序执行位置有关。

【问题讨论】:

【参考方案1】:

我想通了。如果我在将当前目录更改为程序所在目录的行之前设置我的跟踪,我得到了我期望的输出。在此目录更改后设置跟踪后,我不再获得语句执行输出。

为了解决这个问题,我使用完整路径执行了程序

python /home/name/home/some/example1.py

【讨论】:

以上是关于如何让VSCode单步执行脚本内Python语句(Mac系统)的主要内容,如果未能解决你的问题,请参考以下文章

从 gdbinit 脚本单步执行时如何设置跳过不感兴趣的函数?

使用spyder编译器单步调试python

使用 vscode 调试多线程 C 程序时单步切换线程

经验分享vscode远程c++工程gcc或cmake编译单步调试配置

执行脚本python 3.8.5 VSCode时没有输出

Python PDB 与命令输出不一致 - 下一条语句未输出