เหตุใดเบรกพอยต์ของฉันจึงไม่ทำงาน


113

ฉันตั้งค่าเบรกพอยต์ไว้แล้ว แต่ Xcode ดูเหมือนจะเพิกเฉย


2
ผลิตภัณฑ์Cleanช่วยฉัน
Alexander Bekert


ฉันต้องทำการรีสตาร์ทเต็มรูปแบบด้วยคอมพิวเตอร์ของฉันเพื่อให้พวกเขาทำงานได้อีกครั้งและตอนนี้พวกเขากำลังเป็นรถที่มีปัญหามาก ฉันใช้ xcode 10.2.1
llamacorn

2
Xcode 11 รีสตาร์ทและทำความสะอาด Xcode ไม่ทำงานรีสตาร์ท Mac ไม่ทำงาน ลบแอพในอุปกรณ์และสร้างใหม่เพื่อแก้ไขปัญหานี้ หวังว่านี่จะช่วยใครสักคน
Randall Wang

คำตอบ:


148

ครั้งแรกของทั้งหมดผมเห็นด้วย 100% กับคนก่อนหน้านี้ที่กล่าวว่าการเปิดปิด Load Symbols Lazily

ฉันมีอีกสองสิ่งที่จะเพิ่ม

(คำแนะนำแรกของฉันฟังดูชัดเจน แต่ในครั้งแรกที่มีคนแนะนำฉันปฏิกิริยาของฉันก็เป็นไปตามบรรทัดต่อไปนี้: "ได้โปรดเถอะคุณคิดว่าฉันคงไม่รู้ดีกว่า ...... โอ้")

  1. ตรวจสอบว่าคุณไม่ได้ตั้งค่า "Active Build Configuration" เป็น "Release" โดยไม่ได้ตั้งใจ

  2. ภายใต้ "เป้าหมาย" ในการแสดงแผนผังกราฟิกของโครงการของคุณให้คลิกขวาที่เป้าหมายของคุณแล้วทำ "รับข้อมูล" มองหาคุณสมบัติชื่อ "Generate Debug Symbols" (หรือคล้ายกัน) และตรวจสอบให้แน่ใจว่านี่คือ CHECKED (aka ON) นอกจากนี้คุณอาจลองค้นหา (เช่นใน Target >> Get Info) คุณสมบัติที่เรียกว่า "Debug Information Format" และตั้งค่าเป็น "Dwarf with dsym file"

มีคุณสมบัติอื่น ๆ อีกมากมายภายใต้เป้าหมาย >> รับข้อมูลที่อาจส่งผลต่อคุณ มองหาสิ่งต่างๆเช่นการเพิ่มประสิทธิภาพหรือการบีบอัดโค้ดและปิดสิ่งนั้น (ฉันคิดว่าคุณกำลังทำงานในโหมดดีบักดังนั้นนี่ไม่ใช่คำแนะนำที่ไม่ดี) นอกจากนี้ให้มองหาสิ่งต่างๆเช่นสัญลักษณ์ขีดฆ่าและตรวจสอบให้แน่ใจว่าปิดอยู่ด้วย ตัวอย่างเช่นควรตั้งค่า "Strip Linked Product" เป็น "No" สำหรับเป้าหมายการแก้ไขข้อบกพร่อง


8
ใน XCode 4.5.2 ฉันมีปัญหานี้และกลายเป็นเพราะฉันได้เปิดใช้งาน "การเพิ่มประสิทธิภาพเวลาลิงก์" ดังนั้นจึงเป็นอีกสิ่งหนึ่งที่ต้องตรวจสอบ
taxilian

6
หากต้องการเปลี่ยนการกำหนดค่าการสร้างไปที่ผลิตภัณฑ์ -> โครงการ -> แก้ไขโครงการภายใต้เรียกใช้ - ข้อมูล สำหรับฉันสิ่งที่ได้ผลคือการตรวจสอบ "Debug Executable" ในเมนูนั้น
Jeffrey Sun

2
การหักหลังคำตอบด้านบนเพื่อเพิ่มไวยากรณ์ Bison ดูเหมือนจะเป็นอีกสาเหตุ (แปลกใหม่) ที่ทำให้เบรกพอยต์ไม่ทำงาน (ดูคำตอบของฉันด้านล่าง) หวังว่าจะช่วยประหยัดเวลาให้กับคนต่อไปที่มีปัญหานั้น
Dave

2
นอกจากนี้ยังง่ายมากในการสลับการเปิดใช้งานเบรกพอยต์โดยไม่ได้ตั้งใจด้วย⌘Y ดังนั้นระวังเด็ก ๆ
dsgrnt

1
ฉันลองจุดที่ 1 แล้วมันก็ใช้ได้ผลสำหรับฉัน ช่วยฉันจริงๆ โหวตแล้ว
NSPratik

49

ใน Xcode 7 สิ่งที่ได้ผลสำหรับฉันคือ:

1) ตรวจสอบให้แน่ใจว่าเป้าหมาย -> รูปแบบ -> เรียกใช้ - อยู่ในโหมดดีบัก (คือรีลีส)

2) ตรวจสอบให้แน่ใจว่าได้ตรวจสอบตัวเลือก "Debug executable" ดูด้านล่าง:

ใส่คำอธิบายภาพที่นี่


4
นี่คือสิ่งที่เกิดขึ้นกับฉันอย่างแน่นอนไม่ได้เลือกช่องทำเครื่องหมาย
anoop4real

ปัญหาเดียวกันสำหรับฉัน ไม่ควรเปิดใช้ตัวเลือกนั้นโดยค่าเริ่มต้น (XCode 8.3) หรือไม่ เราไม่ควรเป็น devs ทั้งหมดยินดีที่จะแก้ไขข้อบกพร่องหรือไม่?
dgmz

ทำงานให้ฉันใน Xcode 9.3 มันจะดีมากถ้าคุณให้ภาพอื่นสำหรับตัวเลือกที่ 1
Kazi Abdullah Al Mamun

24

ไปที่การตั้งค่าการดีบัก Xcode ตรวจสอบว่าไม่ได้เลือก "Load Symbols lazily"


7
น่าเสียดายที่ไม่มีค่ากำหนด "การดีบัก" ใน Xcode 6 และ "เกียจคร้าน" ไม่ปรากฏในเอกสาร เฮ้อ.
ออสการ์

1
เอาล่ะตอนนี้ฉันไม่พบตัวเลือก 'Load Symbols Lazily' ใน XCode 6
RNA

14

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

  1. ออกจาก Xcode
  2. เปิดหน้าต่างเทอร์มินัลและซีดีไปยังไดเร็กทอรีโปรเจ็กต์
  3. cd ลงในไดเร็กทอรี. xcodeproj
  4. ลบทุกอย่างยกเว้นไฟล์. pbxproj (ฉันมี frank.mode1v3 และ frank.pbxuser)

คุณสามารถทำงานเดียวกันให้สำเร็จใน Finder ได้โดยคลิกขวา / ตัวเลือกที่กลุ่ม. xcodeproj และเลือก "แสดงเนื้อหาแพ็คเกจ"

เมื่อฉันรีสตาร์ท Xcode หน้าต่างทั้งหมดของฉันได้รีเซ็ตเป็นตำแหน่งเริ่มต้น ฯลฯ แต่เบรกพอยต์ใช้งานได้!


2
วิธีนี้ใช้งานได้ แต่จะลบการตั้งค่าทั้งหมดของคุณ ... สิ่งนี้ควรทำเมื่อไม่มีอะไรทำงาน
Rémi Doolaeghe

ทำงานให้ฉันขอบคุณ ฉันสงสัยว่าทำไม Xcode ถึงดูดขนาดนั้น Xcode เป็นซอฟต์แวร์ที่แย่ที่สุดที่เคยเขียนโดย Apple
เป็ด

ว้าวอายุ 5 ขวบ ยากที่จะเชื่อว่ามันยังใช้งานได้และยังคงเป็นปัญหาอยู่!
Frank Szczerba

ไม่ได้ผลสำหรับฉัน ฉันใช้ Xcode 6.01 ตอนนี้เมื่อฉันสร้างฉันได้รับข้อผิดพลาดหลายไฟล์ที่หายไป ฉันกำลังคืนรหัสเพื่อแก้ไข
Native_Mobile_Arch_Dev

ต้องเริ่ม Xcode ใหม่เท่านั้นกรณีของฉันเกิดจากการกำหนดเวอร์ชันของ git เมื่อยอมรับข้อมูลสถานะส่วนต่อประสานผู้ใช้ xcode
Juan Boero

13

สำหรับ Xcode 4.x: Goto Product> Debug Workflow และยกเลิกการเลือก "Show Disassembly when Debugging"

สำหรับ Xcode 5.x Goto Debug> Debug Workflow และยกเลิกการเลือก "Show Disassembly when Debugging"


11

เหตุผลอื่น ๆ

ตั้งค่าDeploymentPostprocessingเป็น NO ใน BuildSettings - ดูรายละเอียดที่นี่

ในระยะสั้น -

การเปิดใช้งานการตั้งค่านี้บ่งชี้ว่าควรแยกไบนารีและโหมดไฟล์เจ้าของและข้อมูลกลุ่มควรตั้งค่าเป็นค่ามาตรฐาน [DEPLOYMENT_POSTPROCESSING]

ใส่คำอธิบายภาพที่นี่


หลังจากการปรับปรุงเพื่อ XCode 7 การตั้งค่านี้เป็นอย่างใดYESเพียง แต่ในของฉันแล้วจุดพักไม่ได้ทำงานในsubproject subprojectsและหลังจากตั้งค่าNOแล้วมันก็สมบูรณ์แบบ!
Maheswaran Ravisankar

สิ่งนี้ใช้ได้ผลสำหรับฉันหลังจากทำความสะอาดโครงการเท่านั้นดังนั้นการสร้างใหม่ทั้งหมดจะเกิดขึ้น
วิ่ง

8

ดูโพสต์นี้: เบรกพอยต์ไม่ทำงานใน Xcode? . คุณอาจกด "Run" แทน "Debug" ซึ่งในกรณีนี้โปรแกรมของคุณไม่ทำงานด้วยความช่วยเหลือของ gdb ซึ่งในกรณีนี้คุณไม่สามารถคาดหวังให้เบรกพอยต์ทำงานได้!


ใน Xcode 6.4 ตอนนี้มีเพียงปุ่ม Run และจะรันการกำหนดค่าการดีบักหรือไม่นั้นขึ้นอยู่กับการตั้งค่าโครงร่างที่เลือกในปัจจุบัน
user2067021

6

หนึ่งในวิธีแก้ปัญหาที่เป็นไปได้คือ .... ไปที่ Product> Scheme> Edit Scheme> .. ภายใต้ Run> info> Executeable check "Debug executable"


อันนี้ใช้ได้ผลกับฉันหลังจากกระแทกหัวมา 2 วัน
Dileep Perla

ดีใจที่ได้ช่วย
Soropromo

5

มีฉันอยู่ใน Xcode 9 เป็นเวลาครึ่งวันที่น่าผิดหวัง มันเป็นการตั้งค่าการดีบักง่ายๆ

ไปที่ Debug> Debug Workflow และตรวจสอบว่าปิด "Always Show Disassembly" อยู่ ง่ายๆแค่นั้นเอง :(


5

วิธีแก้ปัญหาสำหรับฉันด้วย XCode 9.4.1 (ไม่ได้หยุดที่จุดพักใด ๆ ):

ภายใต้ build Target -> Build Settings -> Optimization Level: เปลี่ยนจาก "Optimize for speed" -> "No optimization" (ตอนนี้ช้าลง แต่ใช้งานได้)


5

สิ่งที่แก้ไขได้ในกรณีของฉันค่อนข้างง่ายใน Xcode - Product - Clean Build Folder ตามด้วย Product - Run (ไม่ใช่ปุ่ม Play Xcode)

(มีปัญหาใน Xcode 11 -beta 4 หลังจากเปลี่ยนไปใช้การทดสอบหน่วยด้วยการกดปุ่มเล่น Xcode แบบยาว)


4

มาที่หน้านี้พร้อมกับปัญหาเดียวกัน (รหัส C ใน Xcode 6 ไม่หยุดที่จุดพัก) และไม่มีวิธีแก้ปัญหาใด ๆ ข้างต้นที่ทำงานได้ (โครงการอยู่นอกกรอบการตั้งค่าที่ชาญฉลาดจึงมีโอกาสน้อยมากสำหรับการตั้งค่าดีบักเกอร์ ตั้งค่าผิด) ...

หลังจากเสียเวลาไปพอสมควรในการลดปัญหาในที่สุดฉันก็พบผู้ร้าย (สำหรับรหัสของฉัน):

Xcode (/ LLVM) ไม่ชอบ#lineคำสั่งพรีโปรเซสเซอร์แบบ Bison

การลบออกช่วยแก้ปัญหาได้ (ดีบักเกอร์หยุดที่จุดพักของฉัน)


4

สำหรับ Xcode 4:

go Product -> Debug ->  Activate Breakpoints

ขอบคุณ! สิ่งนี้ช่วยได้ ฉันกำลังจะโพสต์สิ่งนี้ด้วยตัวเองดูเหมือนว่าฉันจะผลัก⌘Yโดยไม่ได้ตั้งใจ
Ovi

2

ฉันมีปัญหามากมายกับเบรกพอยต์ใน Xcode (2.4.1) ฉันใช้โปรเจ็กต์ที่มีโปรเจ็กต์อื่น ๆ (เช่นโซลูชันใน Visual Studio) ฉันพบว่าบางครั้งเบรกพอยต์ไม่ทำงานเลยเว้นแต่จะมีเบรกพอยต์อย่างน้อยหนึ่งจุดในโปรเจ็กต์เริ่มต้น (เช่นเบรกพอยต์ที่มีจุดเข้าใช้งานสำหรับโค้ดของฉัน) หากจุดพักเดียวอยู่ในโปรเจ็กต์ "ระดับล่าง" ก็จะถูกเพิกเฉย

ดูเหมือนว่า Xcode จะจัดการเฉพาะการทำงานของเบรกพอยต์อย่างถูกต้องหากคุณดำเนินการกับเบรกพอยต์เมื่อคุณอยู่ในโปรเจ็กต์ที่มีบรรทัดต้นทางที่เบรกพอยต์เปิดอยู่

ถ้าฉันลองลบหรือปิดการใช้งานเบรกพอยต์ผ่านโปรเจ็กต์อื่นการดำเนินการบางครั้งจะไม่มีผลแม้ว่าดีบักเกอร์จะระบุว่ามี ดังนั้นฉันจะพบว่าตัวเองพังในจุดพักที่ปิดใช้งานหรือบนเบรกพอยต์ (ตอนนี้มองไม่เห็น) ที่ฉันลบไปก่อนหน้า


2

ฉันมีเบรกพอยต์ไม่ทำงานจากนั้นทำการสร้าง / ล้างเป้าหมายทั้งหมดเพื่อให้ทำงานได้อีกครั้ง


2

ฉันคิดว่าปัญหาอาจเกิดจากความไม่ลงรอยกันระหว่างเวอร์ชันอุปกรณ์และ Xcode ฉันมีปัญหานี้เมื่อพยายามดีบักบน iPhone 4S ที่ใช้ iOS 5.0.1 ฉันยังใช้ Xcode 3.2.5 ฉันได้รับสัญลักษณ์จากโทรศัพท์มือถือโดยเลือก "ใช้อุปกรณ์นี้เพื่อการพัฒนา" ในหน้าต่าง Organizer อย่างไรก็ตามโทรศัพท์เครื่องนี้ไม่ยอมหยุดพัก 3GS เก่าของฉันจะเบรกพอยต์โปรเจ็กต์ Xcode เดียวกันการตั้งค่าเดียวกัน ... เพียงอุปกรณ์ที่แตกต่างกันและกำลังใช้งาน iOS 4.0 ฉันเดาว่านี่เป็นข้อผิดพลาด Xcode ใน 3.2.5 เนื่องจากฉันมีสัญลักษณ์ หลังจากลองใช้วิธีแก้ปัญหาทั้งหมดที่โพสต์ไว้ที่นี่ฉันได้ตัดสินใจแล้วว่าวิธีแก้ปัญหาของฉันคือดำเนินการต่อและอัปเกรดเป็น XCode 4 บางทีคุณอาจไม่สามารถดีบักได้อย่างมีประสิทธิภาพเว้นแต่ SDK ฐานของคุณจะสูงพอ ๆ กับระบบที่จะดีบัก อาจจะชัดเจน - มีใครยืนยันได้บ้าง?

แก้ไข: ฉันจะอัปเดตเมื่อสามารถยืนยันได้ว่าเป็นจริง



2

มันเกิดขึ้นแบบเดียวกันกับฉันใน XCode 6.3.1 ฉันจัดการเพื่อแก้ไขโดย:

  • ไปที่View-> Navigators-> Show Debug Navigators
  • คลิกขวาในรูทโปรเจ็กต์ -> ย้ายเบรกพอยต์ (หากเลือกตัวเลือกผู้ใช้)
  • (ฉันเลือกตัวเลือกแชร์เบรกพอยต์ด้วยแม้ว่าฉันจะไม่แน่ใจว่าจำเป็นก็ตาม)

หลังจากทำการเปลี่ยนแปลงนั้นฉันตั้งค่าตัวเลือกย้ายเบรกพอยต์กลับไปที่โปรเจ็กต์และยกเลิกการเลือกตัวเลือกแชร์เบรกพอยต์และยังใช้งานได้

ฉันไม่รู้ว่าทำไม แต่สิ่งนี้ทำให้จุดพักของฉันกลับมา


ขอบคุณ! นอกจากนี้ยังแก้ไขการตอบสนองช้าของการแก้ไขข้อบกพร่องของบันทึก
Jim75

2

สำหรับสิ่งนี้และสำหรับ Xcode 6 ขึ้นไปตรวจสอบให้แน่ใจว่าปุ่มสถานะเบรกพอยต์เปิดใช้งานอยู่ (ปุ่มเหมือนลูกศรสีน้ำเงิน):

ใส่คำอธิบายภาพที่นี่


1

ใน Xcode 4

- Product menu > Manage Schemes
- Select the scheme thats having debugging problems (if only one choose that)
- Click Edit button at bottom
- Edit Scheme dialog appears
- in left panel click on Run APPNAME.app
- on Right hand panel make sure youre on INFO tab
- look for drop down DEBUGGER:
- someone had set this to None
- set to LLDB if this is your preferred debugger
- can also change BUILD CONFIGURATION drop down to Debug 
-      but I have other targets set to AdHoc which debug fine once Debugger is set

1

ฉันพบปัญหา อย่างไรก็ตามมีการเปิดใช้งาน" Show Disassembly when debugging " ใน XCode ของฉันซึ่งสร้างปัญหาดังกล่าว เมื่อฉันปิดใช้งานตัวแก้ไขข้อบกพร่องทั้งหมดของฉันจะหยุดในซอร์สโค้ดของฉัน

คุณสามารถค้นหาได้ภายใต้: Product->Debug Workflow->Show Disassemblyเมื่อทำการดีบัก


1

คุณสามารถเปิดใช้งาน / ปิดการใช้งานเบรกพอยต์ในเมนูแบบเลื่อนลง ใส่คำอธิบายภาพที่นี่


1

หากทุกอย่างล้มเหลวแทนที่จะเป็นเบรกพอยต์คุณสามารถเรียกใช้ฟังก์ชันต่อไปนี้:

void BreakPoint(void) {
    int i=1;
    #if !__OPTIMIZE__
    printf("Code is waiting; hit pause to see.\n");
    while(i);
    #endif
}

หากต้องการดำเนินการต่อให้ตั้งค่า i เป็นศูนย์ด้วยตนเองจากนั้นกดปุ่มดำเนินการต่อ


1

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


@IshantMrinal ทำไมถึงไม่เกี่ยวข้อง? ผู้ใช้ให้คำตอบที่ใช้ได้ในสถานการณ์ของเขา
Noel Widmer

0

เมื่อตั้งค่าจุดพักของคุณให้คลิกขวาและคุณจะได้รับตัวเลือกต่างๆเกี่ยวกับวิธีจัดการจุดพัก (บันทึก vars และดำเนินการต่อหยุดการดำเนินการชั่วคราว ฯลฯ )

ตรวจสอบให้แน่ใจว่าไม่ได้เลือก "Load Symbols lazily" ในการตั้งค่าการดีบัก

(ใช้กับ Xcode 3.1 ไม่แน่ใจเกี่ยวกับเวอร์ชันในอดีต / อนาคต)


0

ตรวจสอบให้แน่ใจว่าไม่ได้ติดตั้งการแจกจ่าย AppStore ของแอปในอุปกรณ์ด้วย


0

สิ่งที่ต้องตรวจสอบอีกประการหนึ่งคือหากคุณมีไฟล์ plist "สิทธิ์" สำหรับโหมดดีบักของคุณ (อาจเป็นเพราะคุณกำลังทำอะไรกับพวงกุญแจ) ตรวจสอบให้แน่ใจว่าไฟล์ plist มีแถว "get-task-allow" = ใช่ หากไม่มีการแก้ไขข้อบกพร่องและการบันทึกจะเสีย


0

ดูเหมือนว่าจะมี 3 สถานะสำหรับเบรกพอยต์ใน Xcode หากคุณคลิกที่พวกเขาพวกเขาจะเข้าสู่การตั้งค่าต่างๆ เปิดใช้งานสีน้ำเงินเข้มสีเทาถูกปิดใช้งานและบางครั้งฉันก็เห็นสีน้ำเงินซีดซึ่งทำให้ฉันต้องคลิกที่เบรกพอยต์อีกครั้งเพื่อให้เป็นสีน้ำเงินเข้ม

นอกเหนือจากนี้ตรวจสอบให้แน่ใจว่าคุณเปิดใช้งานโดยใช้คำสั่ง debug ไม่ใช่คำสั่ง run คุณสามารถทำได้โดยกดปุ่ม option + command + return หรือตัวเลือก Go (debug) จากเมนู run


0

ฉันมี Xcode 3.2.3 SDK 4.1 เบรกพอยต์จะล้มเหลวโดยการสุ่ม ฉันพบว่าคุณล้างบิลด์และใช้คำสั่งสัมผัสภายใต้บิลด์มันทำงานได้อีกครั้งหรือไม่


0

นี่คือสิ่งที่คลุมเครือที่ฉันพบ: หากคุณกำลังทำงานกับไลบรารีที่ใช้ร่วมกัน (หรือปลั๊กอิน) จุดพักของคุณจะเป็นสีเหลืองเมื่อเริ่มต้นซึ่งอาจทำให้คุณใช้แป้นพิมพ์ของคุณด้วยความหงุดหงิดและฆ่ากระบวนการดีบัก อย่าทำอย่างนั้น! สัญลักษณ์จะไม่โหลดจนกว่าแอปจะโหลดไลบรารีซึ่ง ณ จุดนั้นเบรกพอยต์จึงจะใช้ได้ ฉันพบปัญหานี้ด้วยปลั๊กอินเบราว์เซอร์ ... BPs ถูกปิดใช้งานจนกว่าฉันจะเรียกดูหน้าที่สร้างปลั๊กอินของฉัน

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