VSCode - วิธีตั้งค่าไดเร็กทอรีการทำงานสำหรับการดีบัก


100

ฉันกำลังเริ่มใช้ vscode สำหรับ Python ฉันมีโปรแกรมทดสอบง่ายๆ ฉันต้องการเรียกใช้ภายใต้การดีบักและฉันต้องตั้งค่าไดเร็กทอรีการทำงานสำหรับการรัน

ฉันจะทำอย่างไร / ที่ไหน

คำตอบ:


154

ความคิดเห็นของ @ SpeedCoder5 สมควรเป็นคำตอบ;

โดยเฉพาะคุณสามารถระบุไดเร็กทอรีการทำงานแบบไดนามิก (เช่นไดเร็กทอรีใดก็ตามที่มีไฟล์ Python ที่เปิดอยู่ในปัจจุบัน) โดยใช้"cwd": "${fileDirname}"

หากคุณใช้Python: Current File (Integrated Terminal)ตัวเลือกนี้เมื่อคุณเรียกใช้ Python launch.jsonไฟล์ของคุณอาจดูเหมือนของฉันด้านล่าง

{
    "version": "0.2.0",
    "configurations": [
    {
            "name": "Python: Current File (Integrated Terminal)",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "cwd": "${fileDirname}"
    }, 

    //... other settings, but I modified the "Current File" setting above ...
}

จำlaunch.jsonการควบคุมไฟล์การตั้งค่าการทำงาน / การแก้ปัญหาของโครงการ Visual รหัสสตูดิโอของคุณ ; launch.jsonไฟล์ของฉันสร้างขึ้นโดยอัตโนมัติโดย VS Code ในไดเร็กทอรีของ "Open Project" ปัจจุบันของฉัน ฉันเพิ่งแก้ไขไฟล์ด้วยตนเองเพื่อเพิ่ม"cwd": "${fileDirname}"ตามที่แสดงด้านบน

โปรดจำไว้ว่าlaunch.jsonไฟล์อาจเป็นไฟล์เฉพาะสำหรับโปรเจ็กต์ของคุณหรือเฉพาะสำหรับไดเร็กทอรีของคุณดังนั้นยืนยันว่าคุณกำลังแก้ไขถูกต้อง launch.json (ดูความคิดเห็น)

หากคุณไม่มีlaunch.jsonไฟล์ให้ลองทำดังนี้:

ในการสร้างไฟล์ launch.json ให้เปิดโฟลเดอร์โครงการของคุณใน VS Code (ไฟล์> เปิดโฟลเดอร์) จากนั้นเลือกไอคอนกำหนดค่ารูปเฟืองบนแถบด้านบนของมุมมองดีบัก


6
มีวิธีใดในการตั้งค่านี้เป็นค่าเริ่มต้นสำหรับการกำหนดค่าทั้งหมดหรือไม่?
Serhiy

1
ต้องแน่ใจว่าคุณกำลังแก้ไขไฟล์ launch.json ที่ถูกต้อง! จากประสบการณ์ของฉัน VS Code สร้างไดเร็กทอรี. vscode ในทุกโฟลเดอร์โปรเจ็กต์ที่ฉันเปิด หากเมื่อวานนี้คุณเปิดโฟลเดอร์ parent / และวันนี้คุณเปิด parent / child / คุณจะต้องทำการเปลี่ยนแปลงอย่างเหมาะสม
chrisinmtown

1
มีไฟล์อื่นที่มีลักษณะคล้ายกับ launch.json: workspace [x] .code-workspace มันมีคีย์ 'เปิดตัว' การตั้งค่านี้คล้ายกับรายการ launch.json หรือไม่
Timo

1
ฉันสามารถตั้งค่าโฟลเดอร์ในเทอร์มินัลเป็นโฟลเดอร์ที่สคริปต์ได้หรือไม่? เช่นบรรทัดสคริปต์ ps1 สุดท้ายของฉันคือ set-location foo ฉันต้องการให้เทอร์มินัลอยู่ใน foo
Timo

1
คำตอบนี้ไม่ได้ผลสำหรับฉัน แต่คำตอบนี้ทำ: stackoverflow.com/a/62331298/65326
เมื่อ

44

สิ่งที่คุณต้องทำคือกำหนดการตั้งค่า cwd ในไฟล์ launch.json ดังนี้:

{
    "name": "Python",
    "type": "python",
    "pythonPath":"python", 
    ....
    "cwd": "<Path to the directory>"
    ....
}

ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้สามารถพบได้ในอย่างเป็นทางการ VS รหัสเว็บไซต์เอกสาร


ใช่ทำอย่างนั้น ฉันเห็นว่ามันเป็นไดเร็กทอรี. vscode ดังนั้นฉันคิดว่าฉันต้องเพิ่ม \ .. ต่อท้ายใช่ไหม?
user1443098

ใช่จะแก้ไขคำตอบให้สอดคล้องกัน
ดอน

18
"cwd": "${fileDirname}"เพื่อทำงานในไดเรกทอรีปัจจุบันของไฟล์โอเพนซอร์ส
SpeedCoder5

16

การตั้งค่านี้ช่วยฉัน:

{
  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "cwd": "${workspaceFolder}\\app\\js", // set directory here
  "program": "${workspaceFolder}\\app\\js\\server.js", // set start js here
}

12

ในบางกรณีการตั้งค่าPYTHONPATHพร้อมกับworkspaceFolder:

{
    "name": "Python: Current File",
    "type": "python",
    "request": "launch",
    "program": "${file}",
    "console": "integratedTerminal",
    "cwd": "${workspaceFolder}",
    "env": {
        "PYTHONPATH": "${cwd}"
    }
}


3

ฉันกำลังโพสต์การกำหนดค่าตัวอย่างนี้สำหรับผู้ที่ใช้ TypeScript บน Node.js

ในโครงการของฉันไฟล์ TypeScript ของเซิร์ฟเวอร์ Node.js ของฉันอยู่ในโฟลเดอร์ Application_ts และไฟล์ js ที่คอมไพล์จะถูกสร้างขึ้นในโฟลเดอร์ชื่อ Application

เนื่องจากเมื่อเราเรียกใช้แอปพลิเคชันของเราในโหมด debug หรือเริ่มต้นตามปกติเราควรเริ่มจากโฟลเดอร์ Application ซึ่งมีไฟล์ js ดังนั้นการกำหนดค่าการร้องจึงเรียกใช้ debug จากโฟลเดอร์รูทที่ application_ts ของฉันมีอยู่และทำงานได้อย่างสมบูรณ์แบบ

{
  "version": "0.2.0",
  "configurations": [
    {
        "type": "node",
        "request": "launch",
        "name": "Debug TypeScript in Node.js",
        "program": "${workspaceRoot}\\Application\\app.js",
        "cwd": "${workspaceRoot}\\Application",
        "protocol": "inspector",
        "outFiles": [],
        "sourceMaps": true
    },        
    {
        "type": "node",
        "request": "attach",
        "name": "Attach to Process",
        "port": 5858,
        "outFiles": [],
        "sourceMaps": true
    }
 ]
}

1

คุณสามารถตั้งค่าไดเร็กทอรีการทำงานปัจจุบันสำหรับโปรแกรมที่ดีบักโดยใช้cwdอาร์กิวเมนต์ในlaunch.json


สุดยอด! พาฉันไปสู่ขั้นตอนต่อไป ตอนนี้พยายามเรียกใช้โปรแกรมในการดีบัก นี่คือรหัส: พิมพ์ (os.getcwd ())
user1443098

สุดยอด! พาฉันไปสู่ขั้นตอนต่อไป ฉันมีซับเดียว: พิมพ์ (os.getcwd ()) ที่ฉันต้องการดีบัก ฉันคลิกที่ไอคอนแก้ไขข้อบกพร่อง (หรือกด F5) มีเส้นเคลื่อนไหวสีน้ำเงินเล็ก ๆ อยู่ใต้การดึงสิ่งแวดล้อม อย่างไรก็ตามรหัสของฉันไม่ทำงาน เดาว่าฉันขาดอะไรไป อะไรจะปานนั้น
user1443098

ลืมสองคนสุดท้ายฉันเข้าใจแล้ว
user1443098

1
สิ่งต่อไป. เมื่อใช้คำแนะนำฉันรู้สึกประหลาดใจที่เห็นว่า $ {workspaceRoot} ไม่ใช่รูทจริง ๆ แต่เป็นไดเร็กทอรี. vscode ที่อยู่ใต้รูท เป็นไปตามที่คาดไว้หรือไม่? ถ้าเป็นเช่นนั้นฉันสามารถตั้งค่า cwd เป็น $ {workspaceRoot} \ .. (บน windows anway)
user1443098

0

ในการตั้งค่าไดเร็กทอรีการทำงานปัจจุบันเป็นไฟล์ใด ๆ ที่คุณกำลังดำเนินการในเวลานั้น:

ไฟล์> การตั้งค่า> การตั้งค่า> Python> Data Science> ดำเนินการใน File Dir

ขอบคุณ brch: Python ใน VSCode: ตั้งค่าไดเร็กทอรีการทำงานเป็นพา ธ ของไฟล์ python ทุกครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.