Xcode bị kẹt khi lập chỉ mục


116

Một dự án tôi đã làm được 2 tháng đã ngừng hoạt động không có lý do vì Xcode bị kẹt trong "Lập chỉ mục". Tôi không thể Xây dựng dự án nữa. Nếu tôi cố gắng xây dựng, Xcode bị đóng băng và tôi buộc phải thoát. Điều này chỉ xảy ra với dự án này.

Tôi đã thử xóa tất cả dữ liệu có nguồn gốc nhưng không giúp được gì.

Tôi đang sử dụng Xcode 4.5.2.

Có ý kiến ​​gì không?


Dự án có được liên kết với một số loại kiểm soát phiên bản không? Khi nó được liên kết với một kho lưu trữ, nó có xu hướng tiếp tục kiểm tra thường xuyên trạng thái nguồn và sau đó lập chỉ mục các tệp. Nếu dự án của bạn lớn, điều này có thể khiến nó gặp khó khăn khi lập chỉ mục.
gibertoni 12/12/12

Dự án không phải là lớn. Hôm nay tôi đã thêm framework GameKit, nhưng nó hoạt động tốt cả ngày. Khi tôi sắp hoàn tất việc thiết lập Trung tâm trò chơi, sự cố bắt đầu xảy ra. Tôi nói "Lập chỉ mục | Đã xử lý 3 trong số 4 tệp". Đôi khi là "0 của 1 Tệp", đôi khi là 83 trong số 84 tệp ... Tôi đoán tôi sẽ phải tạo một dự án mới và sao chép và dán khá nhiều thứ. Sẽ một vài giờ ...
tomDev 12/12/12

2
Apple và sự tuyệt vời của nó có cùng một thử nghiệm trên xcode 5
Roma-MT

2
Tôi đang gặp sự cố này trên Xcode 9.1. Sau 4 năm họ vẫn bị như vậy: |
Sabri Meviş

3
Xcode 10 GM cũng vậy
QED

Câu trả lời:


163
  1. Mở Thư mục Dự án của bạn.
  2. Tìm tệp ProjectName.xcodeproj.
  3. Nhấp chuột phải Sao chép và Dán vào Nơi An toàn.
  4. Nhấp chuột phải Hiển thị Nội dung Gói.
  5. Tìm tệp project.xcworkspace và xóa tệp đó.
  6. Mở lại dự án của bạn và dọn dẹp và xây dựng lại.

Nếu sự cố của bạn không được giải quyết thì hãy thay thế tệp bằng tệp sao lưu của bạn.


1
Không thể tìm thấy tệp project.xcworkspace bên trong tệp * .xcodeproj trên xcode 6.2. Câu trả lời của @ aleksandar-vacic phù hợp với tôi.
Kie

xcode dường như vẫn bị mắc kẹt khi "lập chỉ mục | chờ xcodebuild", tuy nhiên, nó đã xây dựng thành công khi tôi nhấn chơi, vì vậy đó là điều gì đó.
ớtNUT

3
Bạn có thể giải thích rõ hơn về tập tin này dùng để làm gì / nó liên quan như thế nào đến vấn đề hiện tại?
de.

@marlonpya Tôi đoán bạn đang làm việc với cocoapods trong trường hợp đó tệp không gian làm việc tách biệt với tệp mà tôi đang nói đến. Ở đây tôi đang nói về tệp bên trong tệp .project. Hy vọng điều này sẽ giúp nhưng hãy luôn sao lưu trước khi thay đổi bất kỳ điều gì trên tệp dự án hoặc tệp không gian làm việc.
Pratik Mistry

Trong khi sử dụng cocoapods làm theo hướng dẫn cùng & mở file thư mục gốc .xcworkspace
Leap Hawk

70
  1. Đóng dự án đó từ Xcode
  2. Mở Xcode Organizer, tìm dự án có vấn đề
  3. Xóa thư mục Dữ liệu Có nguồn gốc trong Trình tổ chức
  4. Đóng / mở lại Xcode

Nuking Derived Data là điều đầu tiên cần thử trong mọi trường hợp Xcode hoạt động sai


9
Lưu ý rằng trong Xcode 6.4, bạn nên chuyển đến Window → Projects thay vì Organizer.
kennytm

Cách giải pháp đơn giản hơn câu trả lời được chấp nhận, cảm ơn!
Tim

8
Dữ liệu gốc có trong ~ / Library / Developer / Xcode / DerivedData / trên máy của tôi.
Suragch

23

Tôi đã gặp vấn đề chính xác này, nó là do một mảng 20 mục theo nghĩa đen. Phải chuyển sang cú pháp khác. Khá ngớ ngẩn.


4
Tương tự cho tôi. Hoạt động cho mảng 4x4. Mảng 6x6 là quá nhiều cho xcode ... phim
dfens

@Jehan Bạn nói đúng nhưng nếu bạn xác định kiểu mảng thì sẽ không mất thời gian thì vấn đề của tôi đã được giải quyết. Ví dụ như let propertyType: [[[String: String]]] = [[["propertyKey": "Tất cả các loại"], ["propertyKey": "Nhà"]], [["propertyKey": "Căn hộ & Căn hộ" ], ["propertyKey": "Townhouse"]] ....... Vậy tiếp tục] Nếu bạn không xác định loại thì sẽ mất nhiều thời gian hơn
Shrikant K

2
Tương tự cho tôi. Đây là hoàn toàn kỳ lạ và thất bại thật sự trên một phần của Apple và Xcode
wuf810

1
Làm thế nào để bạn tìm ra những chỗ trong mã mà trình biên dịch bị mắc kẹt?
Tomasz Nazarenko

1
@TomaszNazarenko - Xem câu trả lời của tôi bên dưới. Bạn có thể nhận được xcode để cảnh báo về mã mất quá nhiều thời gian để xử lý.
greencardigan

18
  1. Đóng bất kỳ Xcode nào đã mở
  2. rm -rf ~/Library/Developer/Xcode/DerivedData
  3. Nhấp chuột phải vào PROJECT_NAME.xcworkspace của bạn, chọn 'hiển thị nội dung' và xóa thư mục 'xcuserdata'

9

Tôi gặp sự cố tương tự và nhận thấy rằng tôi đã vô tình định nghĩa một lớp là lớp con của chính nó. Tôi không có cảnh báo hoặc lỗi nào cho việc này nhưng quá trình biên dịch bị kẹt.

class mainClass : mainClass
{
    ...
}

Trên thực tế, đây là giải pháp để lập chỉ mục gặp khó khăn trong trường hợp của tôi. Câu trả lời chính xác!
rghome

Tại sao điều này gây ra (một cách hiệu quả) sự cố quy trình con của Xcode và không tạo ra lỗi như bất kỳ lỗi mã nào khác?
Kirkland

8

Khi sử dụng Xcode 6 và nó nói

Đang chờ thực hiện

Nó có thể là một phiên bản của make đã chạy. Hủy quy trình và lập chỉ mục tiền thu được. Ngớ ngẩn, nhưng đã làm việc cho tôi.


CÁi này đã sửa nó giúp tôi. Tôi có một vùng chứa Docker đang chạy với "bắt đầu" trong nền.
Devin Young

7

Một điều khác để thử nếu bạn đang cố gắng giải quyết các vấn đề lập chỉ mục và bạn đang ở quá xa trên trang!

Hãy thử thêm cờ này vào cài đặt bản dựng của bạn.

-Xfrontend -warn-long-expression-type-checking=400

xây dựng cờ cài đặt

Nó sẽ gây ra cảnh báo trong đó trình biên dịch mất nhiều thời gian để suy ra một biểu thức phức tạp.

cảnh báo

Điều này có thể gây ra lỗi xây dựng sẽ biến mất sau khi bạn tìm thấy các biểu thức chậm và sau đó xóa cờ xây dựng.


Đây là câu trả lời hoàn hảo và chính xác.
jaya raj


4

Đó là một lỗi Xcode (Xcode 8.2.1) và tôi đã báo cáo điều đó với Apple, nó sẽ xảy ra khi bạn có một từ điển lớn theo nghĩa đen hoặc một từ điển lồng vào nhau. Bạn phải chia từ điển của mình thành các phần nhỏ hơn và thêm chúng bằng phương pháp chắp thêm cho đến khi Apple sửa lỗi.


4
  • Đầu tiên, ngắt kết nối khỏi mạng. Cả mạng có dây và mạng không dây của bạn sẽ tắt.
  • Thứ hai, giết com.apple.dt.SourceKitServicequá trình. Sau đó, XCode sẽ bắt đầu lập chỉ mục lại thay vì bị kẹt.

nhập mô tả hình ảnh ở đây


1
Dường như được gọi com.apple.dt.SKAgenttrong Xcode 10
lemonmojo

3

Đối với tôi, việc đóng hoàn toàn Xcode và sau đó khởi động lại dự án đã hoạt động.

Đây không phải là giải pháp cho câu hỏi ban đầu, tôi không tin, nhưng nó là một điều đơn giản hơn để thử trước khi xóa tệp và thư mục, v.v. Ghi nhận câu trả lời này cho ý tưởng.


3

Điều này đã xảy ra với tôi. Nếu bạn đang sử dụng cocoapod, hãy làm như sau:

  1. Xóa project.xcworkspace
  2. Cài đặt lại nhóm bằng 'cài đặt nhóm' trên thiết bị đầu cuối
  3. Nó sẽ tạo một dự án mới.xcworkspace
  4. Mở dự án mới.xcworkspace -> Clean -> Build

1
cảm ơn bạn. Tôi đang phải đối mặt với vấn đề trong xcode11.1 và nó làm việc cho tôi
Rahul Parikh

1
Có vấn đề với Xcode 11.5, cũng đã được khắc phục.
frankenapps

2

Tôi đã gặp một vấn đề tương tự trong đó Xcode sẽ dành nhiều thời gian để lập chỉ mục và thường xuyên bị treo khi xây dựng dự án, tại thời điểm đó tôi phải buộc thoát và khởi chạy lại Xcode. Nó rất khó chịu.

Sau đó, tôi nhận thấy một cảnh báo trong dự án về việc phân công không đúng selfvới tư cách là một đại biểu. Chắc chắn, có một giao thức bị thiếu trong khai báo lớp. Lưu ý rằng có một phép gán tương tự trong mã mẫu của OP (mặc dù không thể biết từ mẫu liệu giao thức đúng có được khai báo hay không):

leaderboardController.leaderboardDelegate == self;

Sau khi giải quyết cảnh báo đó (bằng cách khai báo chính xác giao thức được triển khai), Xcode ngừng hoạt động sai. Ngoài ra, tôi cần lưu ý rằng dự án đã thực thi chính xác kể từ khi các phương thức giao thức được triển khai. Nó chỉ là Xcode không thể xác nhận rằng giao thức trên thực tế nên được thực thi bởi lớp.


2

Không có gì làm việc cho tôi, dự án của tôi là quá lớn (sáp nhập khách quan c, c++, swift, và javacác tập tin với j2obj). Tôi đã vô hiệu hóa lập chỉ mục Xcode và làm việc mà không hoàn thành mã trong nhiều tháng (và đó là một nỗi đau). Nhưng cuối cùng tôi đã tìm ra một giải pháp. Ý tưởng là giữ cho Xcode lập chỉ mục mã, nhưng hạn chế việc sử dụng CPU của nó bằng một công cụ bên ngoài như cputhrottle.

Vì vậy, trước tiên bạn cần cài đặt cputhrottle trong terminal

pha cài đặt cputhrottle

Sau đó, giới hạn quá trình lập chỉ mục Xcode như thế này (20 = 20%)

sudo cputhrottle $ (pgrep -f com.apple.dt.SKAgent) 20

Tôi đã tiết lộ "giải pháp" của mình ở đây với chi tiết chế độ: Cách ngăn Xcode sử dụng 100% CPU khi lập chỉ mục các dự án lớn


Điều này giúp ích, mặc dù cputhrottle không có trong homebrew nữa. Thay vào đó, bạn có thể sử dụng cpulimit nhưng có cú pháp hơi khác: "sudo cpulimit -l 20 -p $ (pgrep -f com.apple.dt.SKAgent)" - Mặc dù bây giờ tôi có thể theo dõi lại (trước đây là không thể), Tôi muốn tìm hiểu điều gì mất quá nhiều thời gian để lập chỉ mục và bỏ qua điều đó khỏi việc lập chỉ mục, nhưng tôi không biết nó là gì, làm thế nào để tìm ra hoặc làm thế nào để bỏ qua điều gì đó (Tôi nghi ngờ một số tệp nhị phân được liên kết lớn hơn hoặc thậm chí có thể tăng cường? ? Tôi chỉ biên dịch C ++, không sử dụng Swift) ..
Eike

Được rồi, tôi sẽ phải quay lại điều đó. Nó có vẻ hữu ích nhưng thực sự tôi đã có một số hành vi kỳ lạ sau đó với skagent cpulimiting. Điều đó chỉ giải quyết triệu chứng dù sao, vì vậy không được khuyến khích.
Eike

Tôi vẫn sử dụng cái này. Lựa chọn khác là vô hiệu hóa hoàn toàn lập chỉ mục Xcode, nhưng điều đó là tồi tệ nhất đối với tôi. Nếu tôi không làm điều này, Xcode sẽ tiếp tục lập chỉ mục ở mức 100% mỗi khi tôi sửa đổi tệp (về cơ bản là 24h / 24) và khi tôi nhập vào trình chỉnh sửa, nó sẽ in ra 1 ký tự cứ sau 2 giây, không thể sử dụng được.
jptsetung

Đây là một phương pháp bạo lực hiệu quả để giải quyết vấn đề. Nếu điều đó phù hợp với bạn, điều đó là tốt. Tôi đã gặp sự cố Xcode / swod's sau khi thực hiện. Và sau đó tôi đã thử bước 3 trong câu trả lời Kijans, (tức là không chỉ xóa dữ liệu có nguồn gốc, mà còn xóa .xcuserdata khỏi .xcworkspace) và bây giờ tất cả đều ổn trở lại. Không biết về cái đó ..
Eike

1

Gặp sự cố tương tự trong Xcode 6.4. Thanh tiến trình cho biết rằng "Lập chỉ mục" đã bị "Tạm dừng". Đã thử xóa project.xcworkspace, sau đó xóa Dữ liệu có nguồn gốc như mô tả ở trên. Không xuất hiện để giúp đỡ. Lưu ý rằng các bài đăng ở trên cũng đề xuất sửa các cảnh báo, và vì tôi đã kế thừa dự án khổng lồ này với 180 cảnh báo, nên tôi tự nhủ: "Cái quái gì đây trông giống như một ngày tốt để sửa các cảnh báo". Khi tôi đang sửa các cảnh báo, nửa giờ sau, tôi nhận thấy rằng thanh tiến trình "Lập chỉ mục" đã tăng từ 10% lên khoảng 20%. Một giờ sau, nó ở mức 50%, sau đó một giờ nữa đến 80%, rồi sau nửa giờ nữa là xong! Kết luận: Hãy thêm "ăn trưa hay ngủ trưa dài" vào những gợi ý trên.


Tôi nghĩ đây là phương sách cuối cùng dành cho tôi.
Rishab

1

Tôi đã gặp sự cố tương tự đối với Xcode 7.0 beta. Trong trường hợp của tôi, các giá trị cho "Hồ sơ cấp phép" và "Giá trị nhận dạng gói sản phẩm" của "Cài đặt bản dựng" khác nhau giữa DỰ ÁN và TARGETS. Tôi đặt các giá trị giống nhau cho chúng. Và tôi cũng đã sử dụng các giá trị tương tự cho TARGETS của "appName" và "appNameTest". Sau đó, đóng dự án và mở lại. Điều đó đã giải quyết trường hợp của tôi.


1

Trong trường hợp của tôi, việc xóa thư mục dữ liệu dẫn xuất không giúp được gì. Rõ ràng là tôi đã có một tệp bị khóa bởi một quy trình khác, vì sau khi đóng một vài cửa sổ đầu cuối và emac, đồng thời chấm dứt quy trình đóng gói gốc phản ứng, mọi thứ đã được giải quyết.


Cũng ở đây, tôi đã làm gián đoạn công cuộc xây dựng lại Carthage trước đó. Rõ ràng không phải tất cả các quy trình đã ngừng chạy, do đó tôi cho rằng vẫn sử dụng một số tệp. Đóng Terminal và đóng-mở lại XCode đã thực hiện được mẹo.
CyberDude

1

Đối với tôi, tôi đã phạm một sai lầm ngu ngốc. Tôi viết một Class như thế này:

class A: A {
.......
}

Một lớp kế thừa chính nó gây ra việc đóng băng. Không có gợi ý tin nhắn nào từ Xcode.


Đây là một nguyên nhân rất có thể xảy ra. Đó là nó trong trường hợp của tôi. Tôi khá chắc rằng tôi cũng đã gặp phải điều này trước đây.
Biểu mẫu

1

Tôi đã gặp sự cố này trong một số dự án với Xcode 9.3.1 và trong trường hợp của tôi, sự cố là do một số mã nhanh mà vì lý do nào đó mà Xcode không thích. Vấn đề này khó giải quyết vì rất khó tìm ra tệp nào đang gây ra sự cố.

Khi gặp sự cố này, tôi xóa một số tệp khỏi dự án Xcode (xóa tài liệu tham khảo) và tôi cố gắng kiểm tra xem lập chỉ mục có hoạt động hay không. Quy trình của tôi để làm như vậy

  1. Xóa một số tệp
  2. Đóng Xcode
  3. Mở Xcode
  4. Nếu quá trình lập chỉ mục kết thúc, hãy thử đổi tên một số phương pháp nếu hoạt động có thể các tệp bạn đã xóa chúng có điều gì đó lạ đối với Xcode.

Trong trường hợp của tôi, tôi có định nghĩa lớp với phần mở rộng phản ứng trong cùng một tệp và vì một số lý do Xcode không thích nó, tôi đã chuyển phần mở rộng phản ứng sang một tệp khác và bây giờ việc lập chỉ mục hoạt động tốt.


Đây là một giải pháp thực sự tốt vì nó cho phép xác định nút cổ chai ngay cả trong một đoạn mã mà bạn chưa viết. Trong trường hợp của tôi, đó là một pod / lib không bị lỗi và tôi phải mất nhiều ngày để xác định nó vì không có cảnh báo nào được xuất ra, ngay cả với các cờ "-Xfrontend -warn-long-expression-type-checks = 300".
Cédric

0

Đồng thời ngừng chạy ứng dụng. nếu bạn có một ứng dụng khác đang chạy với xcode của mình, hãy dừng ứng dụng đó trước và bạn nên tiếp tục lập chỉ mục.


0

Đối với tôi, nguyên nhân là do tôi đã mở cùng một tệp trong cả Trình chỉnh sửa chínhTrình chỉnh sửa trợ lý cùng một lúc. Sau khi tôi đóng Trợ lý biên tập viên, nó đã thành công. (Phiên bản Xcode 7.2.1)


0

Đóng Xcode của bạn, đóng bất kỳ ứng dụng git nào (cây nguồn hoặc thiết bị đầu cuối) nếu nó được mở và cuối cùng khởi động lại dự án của bạn.


0

Đối mặt với điều này gần đây trên XCode 7.3.1 - đối với tôi, tôi nhận thấy việc sử dụng RAM sẽ tăng 100% đối với CleanMyMac3. Sự cố đã tự khắc phục một cách kỳ diệu sau khi tôi khởi động lại máy của mình. Tuy nhiên, công bằng mà nói, tôi đã đi trước và thử câu trả lời được chấp nhận, vì vậy bạn sẽ muốn làm như vậy trước khi khởi động lại chỉ trong trường hợp :-)


0

Tôi đã khắc phục điều này bằng cách chỉ cần xóa ứng dụng khỏi thiết bị của mình và tạo lại.


0

Tôi đã gặp vấn đề tương tự trong phiên bản nhanh 2.2

Nó phải làm với một chức năng quá tải hàm chung

func warnLog() {
    print("Warning line: \(#line) file: \(#file) ")
}

func warnLog<T>(input:T? = nil) -> T? {
    print("Warning line: \(#line) file: \(#file) ")
    return input
}

func warnLog<T>(input:T) -> T {
    print("Warning line: \(#line) file: \(#file) ")
    return input
}

tất cả những gì tôi cần làm là loại bỏ một trong những quá tải không được sử dụng

func warnLog<T>(input:T? = nil) -> T? {
    print("Warning line: \(#line) file: \(#file) ")
    return input
}

0

Trường hợp của tôi: nó không phải là tệp project.xcworkspace, nó không phải là thư mục Dữ liệu gốc.

Tôi đã lãng phí rất nhiều thời gian. Tệ hơn, không có thông báo lỗi. Không có manh mối nào về phần Xcode. Hoàn toàn bị mất.

Cuối cùng chức năng này (với hơn 10 tham số) chịu trách nhiệm.

func animationFrames(level: Float,
                     image: String,
                     frame0: String,
                     frame1: String,
                     frame2: String,
                     frame3: String,
                     frame4: String,
                     frame5: String,
                     frame6: String,
                     frame7: String,
                     frame8: String,
                     frame9: String,
                     frame10: String) {
}

Phát điên lên! Sự thật là nó đáng lo ngại (vì không có lỗi cú pháp, hoặc bất kỳ loại nào)


0

Đối với vấn đề lập chỉ mục XCode 9.3 - Gỡ cài đặt XCode và cài đặt lại từ 0. Làm việc cho tôi.


1
Kích thước của XCode không phải là vài KB. Nó là một vài GB.
iphondroid

0

Sự cố này đã xảy ra với tôi khi máy tính của tôi hết dung lượng hoán đổi. Đã đóng một số chương trình và tab trình duyệt và quá trình xây dựng bất ngờ thành công sau 30 phút bị kẹt tại chỗ. Bên tôi không liên quan gì đến dữ liệu có nguồn gốc, tệp bị khóa, v.v.


0

Tôi đã thử tất cả những thứ được liệt kê, lập chỉ mục vẫn tiếp tục đóng băng. Điều này đã giúp tôi: Nếu lập chỉ mục của bạn bị đóng băng và bạn có một hoặc nhiều quá trình nhanh chóng ăn 99% cpu của bạn - chỉ cần giết (các) nhiệm vụ nhanh này, đợi một chút và tiến trình sẽ di chuyển. Nó có thể lặp lại cho đến khi kết thúc, trong trường hợp của tôi, tôi đã giết quá trình 7 lần, nhưng cuối cùng, việc lập chỉ mục đã hoàn tất!


0

Gặp sự cố này trên một dự án SwiftUI. Hóa ra một trong các chế độ xem SwiftUI của tôi có một biến được khai báo không chính xác. Tôi đã có:

@EnvironmentObject var roomViewModel

nơi tôi cần:

@EnvironmentObject var roomViewModel: RoomViewModel

Không có lỗi trình biên dịch, chỉ là lập chỉ mục vô tận. Sau khi tôi sửa lỗi, dự án được xây dựng nhanh chóng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.