การดีบักด้วยพารามิเตอร์บรรทัดคำสั่งใน Visual Studio


513

ฉันกำลังพัฒนาแอปพลิเคชันบรรทัดคำสั่ง C ++ ใน Visual Studio และจำเป็นต้องดีบักด้วยอาร์กิวเมนต์บรรทัดคำสั่ง ในขณะนี้ฉันเพิ่งเรียกใช้ไฟล์ EXE ที่สร้างขึ้นด้วยอาร์กิวเมนต์ที่ฉันต้องการ (เช่นนี้program.exe -file.txt) แต่วิธีนี้ฉันไม่สามารถดีบักได้ มีบางที่ที่ฉันสามารถระบุอาร์กิวเมนต์สำหรับการดีบักหรือไม่


คำตอบ:


754

ใช่มันอยู่ในส่วนการแก้จุดบกพร่องของหน้าคุณสมบัติของโครงการ

ใน Visual Studio ตั้งแต่ปี 2008: คลิกขวาที่โครงการเลือกคุณสมบัติไปที่ส่วนการแก้จุดบกพร่อง - มีกล่องสำหรับ "อาร์กิวเมนต์คำสั่ง" (เคล็ดลับ: ไม่ใช่วิธีแก้ปัญหา แต่เป็นโครงการ)


296
Stackoverflow เป็นเอกสาร MS เท่านั้นที่ใช้งานได้!
Martin Beckett

12
ระวังให้ดี สิ่งนี้จะไม่เปลี่ยนไฟล์โครงการจริง แต่เป็นไฟล์ vcxproj.user-แทน
TheTrowser

หมายเหตุ: หากคุณมีหลายโครงการในโซลูชันอย่าลืมคลิกขวาที่โครงการที่คุณต้องการเรียกใช้และ "ตั้งเป็นโครงการเริ่มต้น"
Lion Lai

1
จับได้เห็นชัดตรงเผง. แต่เห็นได้ชัดใน VS2017 มันไม่ได้เรียกว่า "ดีบั๊ก" แต่ "ดีบั๊ก" เราอาจไม่เคยรู้ว่าทำไม
OmarL

3
ตรวจสอบให้แน่ใจว่าคุณได้เลือกการกำหนดค่าที่ถูกต้องในรายการดรอปดาวน์ที่ด้านบนของหน้าคุณสมบัติเช่นการกำหนดค่าเดียวกับที่คุณพยายามเรียกใช้
Steve Smith

55

Mozilla.org คำถามที่พบบ่อยเกี่ยวกับการแก้จุดบกพร่อง Mozilla บน Windowsเป็นที่สนใจของที่นี่

ในระยะสั้นดีบัก Visual Studio สามารถเรียกใช้ในโปรแกรมจากบรรทัดคำสั่งอนุญาตให้หนึ่งเพื่อระบุอาร์กิวเมนต์บรรทัดคำสั่งเมื่อเรียกใช้โปรแกรมบรรทัดคำสั่งโดยตรงบนบรรทัดคำสั่ง

ดูเหมือนว่าต่อไปนี้สำหรับ Visual Studio 8 หรือ 9 (Visual Studio 2005 หรือ Visual Studio 2008 ตามลำดับ)

  devenv / debugexe 'ชื่อโปรแกรม' 'ข้อโต้แย้งของโปรแกรม'

นอกจากนี้ยังเป็นไปได้ที่จะมีการดำเนินการ explorerเพื่อเริ่มโปรแกรมในดีบักเกอร์ Visual Studio


17

แม้ว่าคุณจะเริ่มต้นการปฏิบัติการนอก Visual Studio คุณยังสามารถใช้คำสั่ง "Attach" เพื่อเชื่อมต่อ Visual Studio กับปฏิบัติการที่คุณใช้อยู่ สิ่งนี้มีประโยชน์เช่นเมื่อแอปพลิเคชันของคุณทำงานเป็นปลั๊กอินภายในแอปพลิเคชันอื่น


ใช่แนบกับCtrl+Alt+P(หรือคลิก "ดีบั๊ก"> "แนบกับกระบวนการ ... ") แต่นี่ไม่ได้ตอบคำถาม OP จริง ๆ )
T_D

7

Microsoft Visual Studio Ultima 2013

คุณสามารถไปที่เมนู DEBUG → คุณสมบัติหลักคุณสมบัติการกำหนดค่าการดีบักแล้วคุณจะเห็นกล่องสำหรับอาร์กิวเมนต์บรรทัดคำสั่ง

ที่จริงแล้วคุณสามารถตั้งค่าอาร์กิวเมนต์อินพุตเดียวกันสำหรับการกำหนดค่าที่แตกต่างกันทั้งหมดและไม่เพียง แต่สำหรับการดีบักเท่านั้น

จากเมนูพูลดาวน์ของการกำหนดค่าเลือก: การกำหนดค่าทั้งหมดและแทรกอาร์กิวเมนต์อินพุต (แต่ละอาร์กิวเมนต์คั่นด้วยช่องว่าง)

ตอนนี้คุณสามารถรันโปรแกรมของคุณในโหมดที่แตกต่างกันโดยไม่ต้องเปลี่ยนอาร์กิวเมนต์ที่ป้อนเข้าทุกครั้ง


มันทำงานได้เหมือนใน MS VS 2015 เช่นกัน ก่อนที่ฉันจะมุ่งหน้าไปยังคุณสมบัติ "Debug-> {projectname}" ฉันต้องเปิด "เครื่องมือจัดการการกำหนดค่า" ที่สามารถเข้าถึงได้ผ่านทางดรอปดาวน์ที่มี "Debug" และ "Release" เป็นค่าเริ่มต้น หน้าต่างโผล่ขึ้นมาซึ่งฉันสามารถเพิ่มรายการ "การกำหนดค่า" ใหม่ได้ รายการเหล่านี้มีอยู่ในคุณสมบัติ "Debug -> {projectname}"
AMartinNo1

2

นี่อาจช่วยบางคนที่ยังมีปัญหาอยู่ ผมใช้ Visual Studio 2015 argvและฉันเท่านั้นสามารถผ่านข้อโต้แย้งเมื่อฉันเปลี่ยนความหมายของ

แทน

int main(int argc, char **argv){
}

ฉันต้องใช้

int main(int argc, char *argv[]){
}

ฉันไม่รู้ว่าทำไมมันถึงจำเป็น แต่ใช้ได้ผล


นี่คืออะไร? ภาษา C ++ ใช่ไหม มีการจัดการ C ++ (.NET) หรือไม่
Peter Mortensen

มีปัญหาเดียวกัน แต่การประกาศทั้งสองที่กล่าวถึงข้างต้นใช้งานไม่ได้ โซลูชันเปลี่ยนแพลตฟอร์มจาก x86 เป็น x64 ตั้งแต่ฉันทำงานบนเครื่อง 64 บิต
hfrmobile

2

ใน Visual Studio 2017 ที่มีแอ็พพลิเคชันคอนโซล. NET Core ให้ทำดังนี้:

คลิกขวาที่โครงการในโซลูชันหน้าต่างเลือก "Properties" Debug (ด้านซ้าย) และใส่ข้อโต้แย้งลงในฟิลด์"การประยุกต์ใช้ข้อโต้แย้ง"

โปรดทราบว่าควรคั่นด้วยช่องว่าง


1

ใน Visual Studio 2010 คลิกขวาที่โครงการเลือกคุณสมบัติคลิกส่วนกำหนดค่าคุณสมบัติในบานหน้าต่างด้านซ้ายจากนั้นคลิกการดีบักจากนั้นในบานหน้าต่างด้านขวาจะมีกล่องสำหรับอาร์กิวเมนต์คำสั่ง

ในที่ป้อนอาร์กิวเมนต์บรรทัดคำสั่ง คุณดีไปแล้ว ตอนนี้ตรวจแก้จุดบกพร่องและดูผลลัพธ์ หากคุณเบื่อกับการเปลี่ยนแปลงคุณสมบัติให้ป้อนข้อมูลโดยตรงในโปรแกรมชั่วคราว


1

คลิกขวาที่โครงการในหน้าต่างโซลูชันของ Visual Studio เลือก"ดีบั๊ก" (ทางด้านซ้าย) และป้อนอาร์กิวเมนต์ลงในฟิลด์"คำสั่งอาร์กิวเมนต์" :

ป้อนคำอธิบายภาพที่นี่


1

ด้วย VS 2015 และสูงกว่าให้ใช้ส่วนขยายอาร์กิวเมนต์บรรทัดคำสั่งอัจฉริยะ ปลั๊กอินนี้เพิ่มหน้าต่างที่อนุญาตให้คุณเปิดและปิดอาร์กิวเมนต์:

อินเตอร์เฟสอาร์กิวเมนต์บรรทัดคำสั่งอัจฉริยะ

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

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