【问题标题】:How can I debug a python script from command line using PyCharm?如何使用 PyCharm 从命令行调试 python 脚本?
【发布时间】:2016-01-08 13:06:37
【问题描述】:

我想调试一个带有多个命令行参数的Python脚本,比如

myscript.py --input1 ./dir/file1.txt --input2 ./dir/file2.txt

Pycharm。我知道,我可以使用Run/Debug Configuration 添加命令行参数。但是,我觉得这很麻烦,因为每次我想修改参数时都必须打开一个菜单。此外,将文件指定为参数时没有文件名补全。

我更喜欢从我最喜欢的 shell 中调用 myscript.py,在其中我有文件名完成等,但仍然在该脚本上使用 PyCharm 调试器。

【问题讨论】:

  • 您对从代码中获取参数有何想法?我的意思是在运行脚本后尝试获取参数。喜欢raw_input
  • 你应该学习如何使用单元测试来调试你的代码。您应该实现一个函数do_awesome_work(input1, input2) 并使用适当的输入编写测试用例,而不是运行带有参数的脚本。然后,您可以轻松地在 PyCharm 调试器下运行测试用例。
  • 您有什么理由尝试这样做吗?如果您尝试使用多个输入进行调试,则可能值得调试一个案例并单元测试其他案例。如果由于某种原因您确实需要调试多个案例,您可能只想绕过该调试的参数,将值设置为变量,并测试命令行参数是否单独工作。

标签: python debugging terminal pycharm


【解决方案1】:

简答:Tools> Attach to Process...

长答案:

  1. 在您的代码的最开始添加以下行

    input("press Enter to continue")
    
  2. 在 shell 中启动你的代码

    myscript.py --input1 ./dir/file1.txt --input2 ./dir/file2.txt
    
  3. 打开 Pycharm 并用它打开你的myscript.py。在您想调试的任何地方设置break points。选择Tools> Attach to Process...,选择myscript.py正在运行的进程。

  4. 回到myscript.py的shell并点击Enter

您可能会遇到的问题:ptrace 没有做某事的权限

解决办法:

sudo su
echo 0 > /proc/sys/kernel/yama/ptrace_scope

或者你可以直接在里面设置0

/etc/sysctl.d/10-ptrace.conf

【讨论】:

  • 我相信在当前版本中是放在Run > Attach to Local Processes...下的
猜你喜欢
  • 2012-05-01
  • 2016-02-25
  • 2016-11-07
  • 2014-11-30
  • 2020-07-20
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多