จะแนบดีบักเกอร์กับแอพ iOS หลังจากเปิดตัวได้อย่างไร?


102

ฉันมีปัญหาที่ฉันกำลังแก้ไขปัญหาซึ่งเกิดขึ้นไม่บ่อยนักและดูเหมือนจะไม่เกิดขึ้นเมื่อฉันมีสิ่งที่ทำงานภายใต้ Xcode

เป็นไปได้หรือไม่ที่จะเรียกใช้แอพตามปกติ (เช่นจาก Springboard) จนกว่าปัญหาของฉันจะเกิดขึ้นจากนั้นแนบดีบักเกอร์ที่จุดนั้น

ฉันอยากจะทำสิ่งนี้โดยไม่ต้องเจลเบรคถ้าเป็นไปได้

คำตอบ:


125
  • แนบอุปกรณ์ของคุณที่เชื่อมต่อกับ Mac ของคุณ
  • แก้ไขข้อบกพร่อง> แนบกับกระบวนการโดย PID หรือชื่อ
  • ในแผ่นโต้ตอบให้ป้อนชื่อแอปของคุณตามที่ปรากฏในตัวนำทางการแก้ปัญหาเมื่อเริ่มต้นผ่าน Xcode

หากแอปทำงานอยู่แล้วดีบักเกอร์จะแนบไปกับกระบวนการที่กำลังทำงานอยู่ หากไม่ทำงานแอปจะรอให้เปิดใช้งานแล้วจึงแนบ


โอเล่ขอบคุณสำหรับคำตอบ ฉันกำลังมองหาวิธีที่จะทำสิ่งนี้ เมื่อฉันไปแนบดีบักเกอร์ดูเหมือนว่าจะแนบ แต่ฉันได้รับข้อความนี้: คำเตือน: ไม่สามารถอ่านสัญลักษณ์สำหรับ / var / mobile / Applications / {GUID} / {APPNAME} .app / {APPNAME} (ไฟล์ไม่ พบ) เมื่อฉันกดปุ่ม "หยุด" ใน XCode แอปจะหยุดทำงาน ดูเหมือนว่าจะไม่พบสัญลักษณ์การดีบักแม้ว่าจะถูกสร้างขึ้นในโหมดดีบักก็ตาม ความคิดใด ๆ ?
Brian

4
ฉันมีปัญหากับถ้ามันไม่ทำงานมันจะรอให้แอพเปิดตัวจากนั้นแนบ ส่วน. มันใช้ไม่ได้ ฉันใช้ชื่อกระบวนการเพื่อรอให้แอปโทร ฉันเปิดแอปบน iPhone แต่ดีบักเกอร์ไม่ทราบว่าแอปเริ่มทำงานแล้ว
จอนนี่

1
@BrianV - คุณต้องแน่ใจว่าคุณกำลังรวบรวมด้วย -ggdb ถ้าคุณต้องการที่จะสามารถแนบไปกับกระบวนการ
itfische

4
ฉันเห็นด้วยกับจอนนี่; ประสบการณ์ของฉันคือสิ่งที่แนบมาใช้งานได้บนเครื่องจำลอง แต่จะไม่แนบกับอุปกรณ์จริง
James Moore

4
หมายเหตุ: ใน Xcode 5.0.1+ มันคือDebug > Attach to Process > By Process Identifier (PID) or Name stackoverflow.com/a/20193088/175830
Jason Axelson

117

ฉันจะทิ้งสิ่งนี้ไว้ที่นี่เนื่องจากคำตอบอีก 2 ข้อไม่ได้ให้รายละเอียดเพียงพอโดยไม่ต้องดิ้นรนสักนิด

  1. เรียกใช้แอปของคุณในโปรแกรมจำลองและจดชื่อในตัวนำทางการดีบัก ป้อนคำอธิบายภาพที่นี่

  2. เสียบอุปกรณ์ของคุณและอย่าลืมเลือกอุปกรณ์ของคุณเป็นเป้าหมาย ป้อนคำอธิบายภาพที่นี่

  3. Debug> Attach to Process> By Process Identifier (PID) หรือ Name ป้อนคำอธิบายภาพที่นี่
  4. ป้อนชื่อจากขั้นตอนที่ 1 และแนบ นั่นควรเป็นสิ่งที่คุณต้องทำ ป้อนคำอธิบายภาพที่นี่

8
คุณควรมี 1,000 upvotes การดีบักสิ่งต่าง ๆ ที่เริ่มต้นผ่านโครงร่าง URL ของ cutom อาจทำให้ปวดตูดได้หากไม่มีเคล็ดลับที่เรียบร้อยนี้ ขอบคุณมาก!
txulu

2
ฉันหวังว่าฉันจะเห็นคำตอบนี้ก่อนที่ฉันจะใช้เวลา 20 นาทีในการหาสิ่งนี้ด้วยตัวเอง :(
simon_smiley

7
วิธีนี้ใช้งานได้โดยยึดติดกับกระบวนการ แต่ฉันไม่เห็นว่าได้รับเอาต์พุตบันทึกใด ๆ ซึ่งเป็นสิ่งที่ฉันต้องการจริงๆ ความคิดใด ๆ ?
Orlando

2
@ ออร์แลนโด - หากคุณกำลังมองหาเอาต์พุตบันทึกฉันขอแนะนำ DeviceConsole: github.com/rpetrich/deviceconsole
orion elenzil

1
ฉันทำตามที่คุณแนะนำทุกประการ และฉันได้รับข้อผิดพลาด: Could not attach to PIDฉันลองทั้งชื่อและรหัส ฉันพยายามในขณะที่ app ทำงานและในขณะที่มันหยุด ..
น้ำผึ้ง


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