ฉันตั้งค่าเบรกพอยต์ไว้แล้ว แต่ Xcode ดูเหมือนจะเพิกเฉย
ฉันตั้งค่าเบรกพอยต์ไว้แล้ว แต่ Xcode ดูเหมือนจะเพิกเฉย
คำตอบ:
ครั้งแรกของทั้งหมดผมเห็นด้วย 100% กับคนก่อนหน้านี้ที่กล่าวว่าการเปิดปิด Load Symbols Lazily
ฉันมีอีกสองสิ่งที่จะเพิ่ม
(คำแนะนำแรกของฉันฟังดูชัดเจน แต่ในครั้งแรกที่มีคนแนะนำฉันปฏิกิริยาของฉันก็เป็นไปตามบรรทัดต่อไปนี้: "ได้โปรดเถอะคุณคิดว่าฉันคงไม่รู้ดีกว่า ...... โอ้")
ตรวจสอบว่าคุณไม่ได้ตั้งค่า "Active Build Configuration" เป็น "Release" โดยไม่ได้ตั้งใจ
ภายใต้ "เป้าหมาย" ในการแสดงแผนผังกราฟิกของโครงการของคุณให้คลิกขวาที่เป้าหมายของคุณแล้วทำ "รับข้อมูล" มองหาคุณสมบัติชื่อ "Generate Debug Symbols" (หรือคล้ายกัน) และตรวจสอบให้แน่ใจว่านี่คือ CHECKED (aka ON) นอกจากนี้คุณอาจลองค้นหา (เช่นใน Target >> Get Info) คุณสมบัติที่เรียกว่า "Debug Information Format" และตั้งค่าเป็น "Dwarf with dsym file"
มีคุณสมบัติอื่น ๆ อีกมากมายภายใต้เป้าหมาย >> รับข้อมูลที่อาจส่งผลต่อคุณ มองหาสิ่งต่างๆเช่นการเพิ่มประสิทธิภาพหรือการบีบอัดโค้ดและปิดสิ่งนั้น (ฉันคิดว่าคุณกำลังทำงานในโหมดดีบักดังนั้นนี่ไม่ใช่คำแนะนำที่ไม่ดี) นอกจากนี้ให้มองหาสิ่งต่างๆเช่นสัญลักษณ์ขีดฆ่าและตรวจสอบให้แน่ใจว่าปิดอยู่ด้วย ตัวอย่างเช่นควรตั้งค่า "Strip Linked Product" เป็น "No" สำหรับเป้าหมายการแก้ไขข้อบกพร่อง
ใน Xcode 7 สิ่งที่ได้ผลสำหรับฉันคือ:
1) ตรวจสอบให้แน่ใจว่าเป้าหมาย -> รูปแบบ -> เรียกใช้ - อยู่ในโหมดดีบัก (คือรีลีส)
2) ตรวจสอบให้แน่ใจว่าได้ตรวจสอบตัวเลือก "Debug executable" ดูด้านล่าง:
ฉันเพิ่งมีปัญหาเดียวกันนี้ (อีกครั้ง) หลังจากตรวจสอบ "โหลดสัญลักษณ์อย่างเกียจคร้าน" สามครั้งและการลอกและแก้ไขแฟล็กการสร้างข้อมูลฉันได้ทำสิ่งต่อไปนี้:
คุณสามารถทำงานเดียวกันให้สำเร็จใน Finder ได้โดยคลิกขวา / ตัวเลือกที่กลุ่ม. xcodeproj และเลือก "แสดงเนื้อหาแพ็คเกจ"
เมื่อฉันรีสตาร์ท Xcode หน้าต่างทั้งหมดของฉันได้รีเซ็ตเป็นตำแหน่งเริ่มต้น ฯลฯ แต่เบรกพอยต์ใช้งานได้!
สำหรับ Xcode 4.x: Goto Product> Debug Workflow และยกเลิกการเลือก "Show Disassembly when Debugging"
สำหรับ Xcode 5.x Goto Debug> Debug Workflow และยกเลิกการเลือก "Show Disassembly when Debugging"
เหตุผลอื่น ๆ
ตั้งค่าDeploymentPostprocessing
เป็น NO ใน BuildSettings - ดูรายละเอียดที่นี่
ในระยะสั้น -
การเปิดใช้งานการตั้งค่านี้บ่งชี้ว่าควรแยกไบนารีและโหมดไฟล์เจ้าของและข้อมูลกลุ่มควรตั้งค่าเป็นค่ามาตรฐาน [DEPLOYMENT_POSTPROCESSING]
YES
เพียง แต่ในของฉันแล้วจุดพักไม่ได้ทำงานในsubproject
subprojects
และหลังจากตั้งค่าNO
แล้วมันก็สมบูรณ์แบบ!
ดูโพสต์นี้: เบรกพอยต์ไม่ทำงานใน Xcode? . คุณอาจกด "Run" แทน "Debug" ซึ่งในกรณีนี้โปรแกรมของคุณไม่ทำงานด้วยความช่วยเหลือของ gdb ซึ่งในกรณีนี้คุณไม่สามารถคาดหวังให้เบรกพอยต์ทำงานได้!
หนึ่งในวิธีแก้ปัญหาที่เป็นไปได้คือ .... ไปที่ Product> Scheme> Edit Scheme> .. ภายใต้ Run> info> Executeable check "Debug executable"
มีฉันอยู่ใน Xcode 9 เป็นเวลาครึ่งวันที่น่าผิดหวัง มันเป็นการตั้งค่าการดีบักง่ายๆ
ไปที่ Debug> Debug Workflow และตรวจสอบว่าปิด "Always Show Disassembly" อยู่ ง่ายๆแค่นั้นเอง :(
วิธีแก้ปัญหาสำหรับฉันด้วย XCode 9.4.1 (ไม่ได้หยุดที่จุดพักใด ๆ ):
ภายใต้ build Target -> Build Settings -> Optimization Level: เปลี่ยนจาก "Optimize for speed" -> "No optimization" (ตอนนี้ช้าลง แต่ใช้งานได้)
สิ่งที่แก้ไขได้ในกรณีของฉันค่อนข้างง่ายใน Xcode - Product - Clean Build Folder ตามด้วย Product - Run (ไม่ใช่ปุ่ม Play Xcode)
(มีปัญหาใน Xcode 11 -beta 4 หลังจากเปลี่ยนไปใช้การทดสอบหน่วยด้วยการกดปุ่มเล่น Xcode แบบยาว)
มาที่หน้านี้พร้อมกับปัญหาเดียวกัน (รหัส C ใน Xcode 6 ไม่หยุดที่จุดพัก) และไม่มีวิธีแก้ปัญหาใด ๆ ข้างต้นที่ทำงานได้ (โครงการอยู่นอกกรอบการตั้งค่าที่ชาญฉลาดจึงมีโอกาสน้อยมากสำหรับการตั้งค่าดีบักเกอร์ ตั้งค่าผิด) ...
หลังจากเสียเวลาไปพอสมควรในการลดปัญหาในที่สุดฉันก็พบผู้ร้าย (สำหรับรหัสของฉัน):
Xcode (/ LLVM) ไม่ชอบ#line
คำสั่งพรีโปรเซสเซอร์แบบ Bison
การลบออกช่วยแก้ปัญหาได้ (ดีบักเกอร์หยุดที่จุดพักของฉัน)
สำหรับ Xcode 4:
go Product -> Debug -> Activate Breakpoints
ฉันมีปัญหามากมายกับเบรกพอยต์ใน Xcode (2.4.1) ฉันใช้โปรเจ็กต์ที่มีโปรเจ็กต์อื่น ๆ (เช่นโซลูชันใน Visual Studio) ฉันพบว่าบางครั้งเบรกพอยต์ไม่ทำงานเลยเว้นแต่จะมีเบรกพอยต์อย่างน้อยหนึ่งจุดในโปรเจ็กต์เริ่มต้น (เช่นเบรกพอยต์ที่มีจุดเข้าใช้งานสำหรับโค้ดของฉัน) หากจุดพักเดียวอยู่ในโปรเจ็กต์ "ระดับล่าง" ก็จะถูกเพิกเฉย
ดูเหมือนว่า Xcode จะจัดการเฉพาะการทำงานของเบรกพอยต์อย่างถูกต้องหากคุณดำเนินการกับเบรกพอยต์เมื่อคุณอยู่ในโปรเจ็กต์ที่มีบรรทัดต้นทางที่เบรกพอยต์เปิดอยู่
ถ้าฉันลองลบหรือปิดการใช้งานเบรกพอยต์ผ่านโปรเจ็กต์อื่นการดำเนินการบางครั้งจะไม่มีผลแม้ว่าดีบักเกอร์จะระบุว่ามี ดังนั้นฉันจะพบว่าตัวเองพังในจุดพักที่ปิดใช้งานหรือบนเบรกพอยต์ (ตอนนี้มองไม่เห็น) ที่ฉันลบไปก่อนหน้า
ฉันมีเบรกพอยต์ไม่ทำงานจากนั้นทำการสร้าง / ล้างเป้าหมายทั้งหมดเพื่อให้ทำงานได้อีกครั้ง
ฉันคิดว่าปัญหาอาจเกิดจากความไม่ลงรอยกันระหว่างเวอร์ชันอุปกรณ์และ Xcode ฉันมีปัญหานี้เมื่อพยายามดีบักบน iPhone 4S ที่ใช้ iOS 5.0.1 ฉันยังใช้ Xcode 3.2.5 ฉันได้รับสัญลักษณ์จากโทรศัพท์มือถือโดยเลือก "ใช้อุปกรณ์นี้เพื่อการพัฒนา" ในหน้าต่าง Organizer อย่างไรก็ตามโทรศัพท์เครื่องนี้ไม่ยอมหยุดพัก 3GS เก่าของฉันจะเบรกพอยต์โปรเจ็กต์ Xcode เดียวกันการตั้งค่าเดียวกัน ... เพียงอุปกรณ์ที่แตกต่างกันและกำลังใช้งาน iOS 4.0 ฉันเดาว่านี่เป็นข้อผิดพลาด Xcode ใน 3.2.5 เนื่องจากฉันมีสัญลักษณ์ หลังจากลองใช้วิธีแก้ปัญหาทั้งหมดที่โพสต์ไว้ที่นี่ฉันได้ตัดสินใจแล้วว่าวิธีแก้ปัญหาของฉันคือดำเนินการต่อและอัปเกรดเป็น XCode 4 บางทีคุณอาจไม่สามารถดีบักได้อย่างมีประสิทธิภาพเว้นแต่ SDK ฐานของคุณจะสูงพอ ๆ กับระบบที่จะดีบัก อาจจะชัดเจน - มีใครยืนยันได้บ้าง?
แก้ไข: ฉันจะอัปเดตเมื่อสามารถยืนยันได้ว่าเป็นจริง
การลบโฟลเดอร์ Build ของฉันช่วยแก้ปัญหาให้ฉันได้
มันเกิดขึ้นแบบเดียวกันกับฉันใน XCode 6.3.1 ฉันจัดการเพื่อแก้ไขโดย:
หลังจากทำการเปลี่ยนแปลงนั้นฉันตั้งค่าตัวเลือกย้ายเบรกพอยต์กลับไปที่โปรเจ็กต์และยกเลิกการเลือกตัวเลือกแชร์เบรกพอยต์และยังใช้งานได้
ฉันไม่รู้ว่าทำไม แต่สิ่งนี้ทำให้จุดพักของฉันกลับมา
สำหรับสิ่งนี้และสำหรับ Xcode 6 ขึ้นไปตรวจสอบให้แน่ใจว่าปุ่มสถานะเบรกพอยต์เปิดใช้งานอยู่ (ปุ่มเหมือนลูกศรสีน้ำเงิน):
ใน 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
ฉันพบปัญหา อย่างไรก็ตามมีการเปิดใช้งาน" Show Disassembly when debugging " ใน XCode ของฉันซึ่งสร้างปัญหาดังกล่าว เมื่อฉันปิดใช้งานตัวแก้ไขข้อบกพร่องทั้งหมดของฉันจะหยุดในซอร์สโค้ดของฉัน
คุณสามารถค้นหาได้ภายใต้: Product->Debug Workflow->Show Disassembly
เมื่อทำการดีบัก
คุณสามารถเปิดใช้งาน / ปิดการใช้งานเบรกพอยต์ในเมนูแบบเลื่อนลง
หากทุกอย่างล้มเหลวแทนที่จะเป็นเบรกพอยต์คุณสามารถเรียกใช้ฟังก์ชันต่อไปนี้:
void BreakPoint(void) {
int i=1;
#if !__OPTIMIZE__
printf("Code is waiting; hit pause to see.\n");
while(i);
#endif
}
หากต้องการดำเนินการต่อให้ตั้งค่า i เป็นศูนย์ด้วยตนเองจากนั้นกดปุ่มดำเนินการต่อ
ฉันลองทำทุกอย่างข้างต้นแล้ว แต่สำหรับฉันการปิดใช้งานเบรกพอยต์การแก้จุดบกพร่องเพียงครั้งเดียวจากนั้นการเปิดใช้งานจะใช้งานได้
เมื่อตั้งค่าจุดพักของคุณให้คลิกขวาและคุณจะได้รับตัวเลือกต่างๆเกี่ยวกับวิธีจัดการจุดพัก (บันทึก vars และดำเนินการต่อหยุดการดำเนินการชั่วคราว ฯลฯ )
ตรวจสอบให้แน่ใจว่าไม่ได้เลือก "Load Symbols lazily" ในการตั้งค่าการดีบัก
(ใช้กับ Xcode 3.1 ไม่แน่ใจเกี่ยวกับเวอร์ชันในอดีต / อนาคต)
ตรวจสอบให้แน่ใจว่าไม่ได้ติดตั้งการแจกจ่าย AppStore ของแอปในอุปกรณ์ด้วย
สิ่งที่ต้องตรวจสอบอีกประการหนึ่งคือหากคุณมีไฟล์ plist "สิทธิ์" สำหรับโหมดดีบักของคุณ (อาจเป็นเพราะคุณกำลังทำอะไรกับพวงกุญแจ) ตรวจสอบให้แน่ใจว่าไฟล์ plist มีแถว "get-task-allow" = ใช่ หากไม่มีการแก้ไขข้อบกพร่องและการบันทึกจะเสีย
ดูเหมือนว่าจะมี 3 สถานะสำหรับเบรกพอยต์ใน Xcode หากคุณคลิกที่พวกเขาพวกเขาจะเข้าสู่การตั้งค่าต่างๆ เปิดใช้งานสีน้ำเงินเข้มสีเทาถูกปิดใช้งานและบางครั้งฉันก็เห็นสีน้ำเงินซีดซึ่งทำให้ฉันต้องคลิกที่เบรกพอยต์อีกครั้งเพื่อให้เป็นสีน้ำเงินเข้ม
นอกเหนือจากนี้ตรวจสอบให้แน่ใจว่าคุณเปิดใช้งานโดยใช้คำสั่ง debug ไม่ใช่คำสั่ง run คุณสามารถทำได้โดยกดปุ่ม option + command + return หรือตัวเลือก Go (debug) จากเมนู run
ฉันมี Xcode 3.2.3 SDK 4.1 เบรกพอยต์จะล้มเหลวโดยการสุ่ม ฉันพบว่าคุณล้างบิลด์และใช้คำสั่งสัมผัสภายใต้บิลด์มันทำงานได้อีกครั้งหรือไม่
นี่คือสิ่งที่คลุมเครือที่ฉันพบ: หากคุณกำลังทำงานกับไลบรารีที่ใช้ร่วมกัน (หรือปลั๊กอิน) จุดพักของคุณจะเป็นสีเหลืองเมื่อเริ่มต้นซึ่งอาจทำให้คุณใช้แป้นพิมพ์ของคุณด้วยความหงุดหงิดและฆ่ากระบวนการดีบัก อย่าทำอย่างนั้น! สัญลักษณ์จะไม่โหลดจนกว่าแอปจะโหลดไลบรารีซึ่ง ณ จุดนั้นเบรกพอยต์จึงจะใช้ได้ ฉันพบปัญหานี้ด้วยปลั๊กอินเบราว์เซอร์ ... BPs ถูกปิดใช้งานจนกว่าฉันจะเรียกดูหน้าที่สร้างปลั๊กอินของฉัน