ดีบักเกอร์ Xcode 11 ช้ามาก - ปัญหาที่ทราบหรือไม่?


95

เนื่องจากฉันอัปเดตเป็น Xcode เวอร์ชัน 11.0 (11A420a) ล่าสุดการดีบักจึงช้าและยุ่งยากมาก

แก้ไข:หลังจากอัปเดตเป็น 11.1 GM (11A1027) ปัญหายังคงเหมือนเดิม

การรวบรวมโปรเจ็กต์และเรียกใช้ในโปรแกรมจำลองหรือบนอุปกรณ์ก็ไม่มีปัญหา อย่างไรก็ตามเมื่อไปถึงเบรกพอยต์ Xcode จะใช้ไม่ได้มากหรือน้อย:

  • การทำงานของโปรแกรมจะหยุดลงทันทีเมื่อถึงจุดพัก อย่างไรก็ตาม Xcode ต้องใช้เวลาถึง 30 วินาทีในการแสดงตำแหน่งในหน้าต่างโค้ดและอีกหนึ่งนาทีเพื่อโหลดเนื้อหาของมุมมองตัวแปร (ซึ่งจะแสดงค่าและสถานะของตัวแปรที่มีอยู่ที่เบรกพอยต์)
  • หากฉันใช้คุณสมบัติStep intoหรือStep overจะใช้เวลาถึงหนึ่งนาทีในการดำเนินการขั้นตอนถัดไปและอีกนาทีในการโหลดตัวแปร

ฉันใช้ Xcode บน Mac mini 2018 ที่มี 3.2 GHz i7 และ 32 GB ram ฉันเคยใช้ Xcode 10 บนเครื่องเดียวกันมาก่อนโดยไม่มีปัญหาใด ๆ


การค้นหา "Xcode slow" จะทำให้เกิดเธรดจำนวนมากและวิธีแก้ปัญหาที่เป็นไปได้ ตั้งแต่ปีที่ฉันเป็นนักพัฒนา iOS ฉันรู้ว่า Xcode ไม่เคยเป็นโปรแกรมที่เร็วและเสถียร อย่างไรก็ตามมันไม่เคยเลวร้ายเท่าตอนนี้

น่าเสียดายที่ไม่มีเทคนิคใด ๆ ที่รู้ (การรีสตาร์ท Xcode หรือ Mac การทำความสะอาดโปรเจ็กต์การล้างโฟลเดอร์ไลบรารี Xcode ฯลฯ ไม่มีผลใด ๆ

ดังนั้นคำถามใหญ่คือ:

นี่เป็นปัญหาที่ทราบแล้วใน Xcode 11 หรือไม่ มีวิธีแก้ไขที่เป็นที่รู้จักหรือไม่?


สำหรับผู้เริ่มต้น Xcode เวอร์ชันเสถียรล่าสุดคือ 11A1027 ไม่ใช่ 11A420a ฉันจะเริ่มต้นด้วยการอัปเดต
Rafael Francisco

2
MMH, 11A420a เป็นเวอร์ชันล่าสุดที่มีอยู่ใน App Store
Andrei Herford

2
ตอนนี้ฉันได้อัปเดตเป็น 11A420a แล้วปัญหาก็ยังเหมือนเดิม
Andrei Herford

2
ฉันลอง 11.1 (11A1027) - เหมือนกัน
nikans

3
สิ่งหนึ่งที่คุณทำได้คือยื่นรายงานข้อบกพร่องกับ Apple นั่นคือสิ่งที่ฉันมักจะทำ ในที่สุดพวกเขาก็ตอบกลับ โดยทั่วไปพวกเขาจะขอข้อมูลระบบและต้องการให้คุณเรียกใช้การวินิจฉัยบางอย่าง โดยทั่วไป Xcode ทำงานช้าและฉันไม่แน่ใจว่า Apple รู้วิธีแก้ไข ฉันใช้ iMac Pro 10 คอร์และ Xcode ยังช้าอยู่
Mobile Ben

คำตอบ:


26

ฉันมีปัญหาเดียวกันและเมื่อเร็ว ๆ นี้พบว่าฉันลืมปิดการใช้งานการวินิจฉัยสำหรับโครงการของฉัน

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

เปิดการกำหนดค่าการรันของคุณ -> จัดการโครงร่าง -> แก้ไขโครงร่าง -> เรียกใช้ -> แท็บการวินิจฉัย


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

Andrei คุณช่วยระบุเมตริกเชิงปริมาณได้ไหมว่า "ช้าลง" หมายความว่าอย่างไร คุณรู้หรือไม่ว่าการสร้างโครงการภาษาผสมของ Swift และ Objective-C มักจะช้ากว่า
Gennadiy Ryabkin

2
ฉันคิดว่ามันทั้งหมดอยู่ในคำถาม ... ก่อนอื่นสิ่งนี้ไม่เกี่ยวข้องกับเวลาในการสร้าง ตามที่เขียนไว้ก่อนหน้านี้: "การรวบรวมโปรเจ็กต์และเรียกใช้ในโปรแกรมจำลองหรือบนอุปกรณ์ก็ไม่มีปัญหาอย่างไรก็ตามเมื่อถึง Xcode เบรกพอยต์จะใช้ไม่ได้มากขึ้นหรือน้อยลง"
Andrei Herford

Andrei เจ๋ง แต่คำตอบของฉันเกี่ยวกับดีบักเกอร์ หน้าการวินิจฉัยจะแสดงการตั้งค่าของดีบักเกอร์ และไม่มีอะไรเกี่ยวกับเวลาสร้าง โดยเฉพาะส่วนที่เกี่ยวกับการจัดการและการจัดสรรหน่วยความจำ เพียงตรวจสอบชื่อโครงร่างและการกำหนดค่าของคุณอีกครั้ง
Gennadiy Ryabkin

Andrei ฉันไม่คิดว่าคุณติดตั้ง LLDB แบบกำหนดเองที่ด้านบนของ Xcode 11 ซึ่งแสดงถึง OS-X ล่าสุด เป็นสิ่งที่เฉพาะเจาะจงสำหรับสภาพแวดล้อมของคุณ ฉันขอแนะนำให้ตรวจสอบการตั้งค่าโครงร่างทั้งหมดอีกครั้ง
Gennadiy Ryabkin

1

ฉันได้เห็นการปรับปรุงประสิทธิภาพบางอย่างเมื่อใช้พฤติกรรมการรวบรวมแบบรวมกับแบบเพิ่มหน่วย นอกจากนี้การทำงานบน Mojave และ Catalina ควรแสดงปัญหาด้านประสิทธิภาพ โดยเฉพาะอย่างยิ่งเนื่องจากการแสดงตัวอย่าง Canvas และคุณสมบัติใหม่อื่น ๆ ต้องการความเข้มของ CPU มากกว่า Xcode เวอร์ชันล่าสุดฉันคาดว่าประสิทธิภาพของ Mojave จะลดลงเมื่อใช้ Xcode 11 (เนื่องจากไม่ได้รับการปรับให้เหมาะกับระบบปฏิบัติการเวอร์ชันนี้) เมื่อ Catalina อยู่ในเบต้าฉันคาดว่าจะได้เห็นปัญหาเพิ่มเติมเช่นกัน ฉันยังไม่ได้ใช้มาตรการเฉพาะอื่น ๆ นอกเหนือจากการทดสอบสายตา การรันครั้งแรกบน Whole Compilation นั้นช้า แต่ดูเหมือนว่าจะดีขึ้นหลังจากนั้น

สถานะความช่วยเหลือด่วน:

สรุป

การตั้งค่านี้ควบคุมวิธีสร้างไฟล์ Swift ในโมดูลใหม่ * Incremental : สร้างซอร์สไฟล์ Swift ใหม่ในโมดูลที่ล้าสมัยเท่านั้นโดยเรียกใช้กระบวนการคอมไพเลอร์หลายรายการตามต้องการ * โมดูลทั้งหมด : สร้างซอร์สไฟล์ Swift ทั้งหมดในโมดูลใหม่เสมอในกระบวนการคอมไพเลอร์เดียว คำประกาศ

SWIFT_COMPILATION_MODE ประเภทค่า

การแจงนับ (สตริง)


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

2
แม้ว่าคำตอบจะไม่สามารถแก้ปัญหาที่อธิบายไว้ในคำถามได้ แต่ก็มีคนสังเกตเห็นว่าผู้เขียนได้ใช้ความพยายาม นั่นไม่น่าจะเป็นเหตุผลที่ทำให้คะแนนเสียงลดลงมากควรหรือไม่?
Andrei Herford

Incremental คือการตั้งค่าที่แนะนำในรุ่น debug ทันที (ดู WWDC talk developer.apple.com/videos/play/wwdc2018/408 ) อาจจะขึ้นอยู่กับโปรเจ็กต์ต่อโปรเจ็กต์ แต่สำหรับการสร้างแบบคลีนของเรานั้นช้ากว่าการสร้างโมดูลทั้งหมดเล็กน้อย (5s) แต่เร็วขึ้นประมาณ 40% (30 วินาที) สำหรับการสร้างแบบเพิ่มหน่วย
Mike Bryant

@nikans เวลารวบรวมยังคงช้าเมื่อเทียบกับ IDE อื่น ๆ และภาษาอื่น ๆ แต่ฉันต้องยอมรับว่าสิ่งที่แย่ที่สุดคือตัวดีบักเกอร์
firetrap

1

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

แก้ไขโครงการ:

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


0

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


ปรากฎว่าซอฟต์แวร์ป้องกันไวรัสของฉันทำให้สิ่งต่างๆช้าลง การปิดใช้งานช่วยแก้ปัญหาได้
Dino

@beefon ฉันเชื่อว่า Dino อ้างถึงเซฟโหมด MacOs คุณสามารถอ่านเพิ่มเติมได้ที่นี่: support.apple.com/en-us/HT201262
Bartosz Kunat

0

ฉันพบปัญหาเดียวกันในสองกรณีที่แตกต่างกัน:

1) แอปไม่ได้เปิดใช้งานโดย Xcode กล่าวคือตั้งค่าสถานะ "รอให้เรียกใช้ปฏิบัติการได้" ภายในแผงข้อมูลของการตั้งค่า Scheme Run

2) ตัวเลือก "เปิดตัวเนื่องจากเหตุการณ์การดึงข้อมูลพื้นหลัง" ถูกเลือกในการตั้งค่าโครงร่าง (แต่นี่ไม่ใช่ค่าเริ่มต้น)

ตำแหน่งตัวเลือก Xcode

Xcode 11.2.1 (11B500)


0

ในกรณีของฉัน (XCode 11.x, MacOS 10.15.2) ฉันพบว่าความช้าของการดีบักเกอร์จะเกิดขึ้นก็ต่อเมื่อฉันทำขั้นตอนเดียวในขณะที่การดำเนินการขั้นตอนเดียวอื่นกำลังดำเนินอยู่นั่นคือฉันกดปุ่มขั้นตอนเร็วเกินไป วิธีแก้ปัญหาปัจจุบันของฉันคือหลีกเลี่ยงการทำเช่นนั้น

การเก็งกำไรที่บริสุทธิ์ แต่บางทีอาจเกิดจาก XCode / LLDB ที่พยายามให้บริการจุดพักหลายจุดพร้อมกัน? ลองลบจุดพักทั้งหมด แต่จุดเดียวและดูว่าช่วยได้หรือไม่

ในกรณีที่เกี่ยวข้อง: ส่วนใหญ่ฉันทำงานกับ C ++ ใน XCode โดยมี Obj-C เล็กน้อยที่นี่และที่นั่น ปัจจุบันฉันไม่ได้ใช้ Swift เลย


0

ฉันจัดการกับเรื่องนี้มาตลอดและในที่สุดก็คิดออก มันเป็นบรรทัดเหล่านี้ในไฟล์ ~ / .lldbinit ของฉัน:

break set -F '-[UIView layoutIfNeeded]' -c '!(BOOL)[NSThread isMainThread]' -L objc
break set -F '-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded]' -c '!(BOOL)[NSThread isMainThread]' -L objc

ฉันแสดงความคิดเห็นเกี่ยวกับบรรทัดเหล่านั้นและตอนนี้มันเกือบจะเร็วพอ ๆ กับที่ไม่มีตัวแก้จุดบกพร่อง!


-2

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

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