Loading...

说在前面

如果想要在服务器中使用以下这种方法来单步调试python文件,那么直接点起单步调试按钮即可:

1
python xx.py

在文章中,针对的是以下这种情况来单步调试文件,即无法点击调试按钮就可以开始调试的情况:

1
python xx.py --train_file ... 

直接点击调试按钮会出现以下这样的画面:


操作步骤

1.找到最上面的窗口,然后输入Debug: Open launch.json


2.打开launch.json文件如下:


3.修改launch.json,添加args字段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true,
"args": ["--train_file","path_to_train_file", "--validation_file", "path_to_validation_file"]
}
}
]
}

4.具体示例

2024.02.27更新:示例可能有些问题,请移步这里

脚本文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
python -m torch.distributed.run \
--nproc_per_node 8 --master_port 44144 \
run_pretrain_binary.py \
\
--dataset_name /data10/static_10000 \
--model_name_or_path bert-base-uncased \
--per_device_train_batch_size 32 \
--per_device_eval_batch_size 32 \
--learning_rate 2e-4 \
--max_train_steps 500 \
--num_warmup_steps 50 \
--output_dir /data10/sqy/spikeBert_Sqy/output \
--max_seq_length 128 \
--checkpointing_steps 50

launch.json文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: 模块",
"type": "python",
"request": "launch",
"module": "torch.distributed.run",
"justMyCode": true
},
{
"name": "Python: Distributed Torch",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/sqy/spikeBert_Sqy/run_pretrain_binary.py",
//"module": "torch.distributed.run",
"console": "integratedTerminal",
"args": [
//"--nproc_per_node=8"
//,"--master_port=44144",
"--dataset_name",
"/data10/static_10000",
"--model_name_or_path",
"/data10/sqy/spikeBert_Sqy/bert-base-uncased",
"--per_device_train_batch_size",
"32",
"--per_device_eval_batch_size",
"32",
"--learning_rate",
"2e-4",
"--max_train_steps",
"500",
"--num_warmup_steps",
"50",
"--output_dir",
"/data10/sqy/spikeBert_Sqy/output",
"--max_seq_length",
"128",
"--checkpointing_steps",
"50"
],
"env": {
"MASTER_PORT": "44144",
"NPROC_PER_NODE": "8"
}
}
]
}

注意:

  • moudel / program 这两者只能存在一个
  • "program":"${workspaceFolder}/sqy/spikeBert_Sqy/run_pretrain_binary.py",我不知道为什么,一旦调试就会进入根目录,所以这里workspaceFolder指的就是根目录,所以记得填写好路径,才能运行
  • "--model_name_or_path","/data10/sqy/spikeBert_Sqy/这里之前也用的是相对路径,导致我报了不少错误,很大的一个debug工程捏,相对路径害死人呜呜

常用 launch.json 配置参数详解

在使用 launch.json 配置调试环境时,会涉及到多个参数,用于定义调试器的行为和目标执行环境。以下是一些常用的配置参数:

  • “type”:指定调试器的类型,例如 "node" 表示 Node.js 调试器,"python" 表示 Python 调试器,"java" 表示 Java 调试器等。
  • “request”:指定调试的请求类型,可以是 "launch"(启动一个新的进程)或 "attach"(附加到已有的进程)。
  • “name”:为配置提供一个友好的名称,方便识别不同的调试配置。
  • “program”:用于指定程序的入口文件路径,可以是绝对路径或相对于工作目录的路径。
  • “args”:传递给程序的命令行参数,以数组形式提供。
  • “cwd”:指定程序的工作目录,可以是绝对路径或相对于工作目录的路径。
  • “env”:设置程序运行时的环境变量,以对象形式提供。
  • “stopOnEntry”:设置为 true 时,在启动后会在入口处停止,等待调试器连接。
  • “preLaunchTask”:指定在启动调试前运行的任务,通常是一个编译任务。
  • “postDebugTask”:指定在调试结束后运行的任务,比如清理任务。
  • “outFiles”:设置输出文件的路径,用于映射源代码和编译后的文件。
  • “sourceMaps”:控制是否启用源代码映射,可以是 "inline""both""false"
  • “sourceMapPathOverrides”:用于根据源代码映射调整文件路径。
  • “externalConsole”:设置为 true 时,将在外部控制台中运行程序。
  • “internalConsoleOptions”:控制内部控制台的显示方式,可以是 "neverOpen""openOnSessionStart""openOnFirstSessionStart"
  • “showAsyncStacks”:设置为 true 时,在堆栈跟踪中显示异步调用的信息。
  • “stopOnError”:设置为 true 时,当发生错误时暂停调试。
  • “smartStep”:设置为 true 时,跳过无需调试的代码。
  • “skipFiles”:指定不需要调试的文件或文件夹。
  • “justMyCode”:设置为 true 时,只调试自己的代码。