2009-09-03 30 views
9

Tôi có một dự án cho Mac OS X 10.5 mà tôi đang xây dựng trên 10.6 bằng Xcode 3.2. Khi tôi sử dụng GCC 4.2 cho Debug xây dựng và nhấn một breakpoint, Xcode debugger hiển thị thông tin biến địa phương bình thường. Nếu tôi chọn LLVM GCC 4.2 hoặc Clang LLVM, khi tôi nhấn điểm ngắt, biểu tượng cục bộ không có sẵn và GDB nói Không có ký hiệu 'tự' trong ngữ cảnh hiện tại nếu tôi cố in tự hoặc bất kỳ biểu tượng địa phương nào khác. Trong mọi trường hợp Tạo thông tin gỡ lỗi tùy chọn được đặt. Cấu hình gỡ lỗi được đặt thành $(NATIVE_ARCH) và 10.5 SDK, Chỉ tạo tùy chọn cấu trúc hoạt động. Khi GDB bắt đầu, tôi có thể thấy nó đang được cấu hình là x86_64-apple-darwin. Tôi phải thiếu một cái gì đó hiển nhiên. Làm cách nào để làm cho GDB hiển thị biểu tượng cục bộ khi sử dụng trình biên dịch LLVM?Xcode 3.2 + LLVM = không có biểu tượng địa phương khi gỡ lỗi

Trả lời

9

Đối với những người không quen thuộc, chi tiết hơn một chút đối với câu trả lời của cdespinosa, điều này phù hợp với tôi và tôi đã bình chọn.

  1. Từ menu Xcode, chọn Project> Edit Settings dự án ...
  2. Chọn Build tab
  3. Trong các loại hộp tìm kiếm "Tối ưu hóa Level", chọn lĩnh vực đó, và chọn None.
  4. Tìm kiếm tiếp theo cho "Định dạng thông tin gỡ lỗi", chọn trường đó và chọn "DWARF" hoặc "DWARF với dSYM".

Bạn có thể đưa ý kiến ​​này vào bài đăng của mình nếu tôi có người làm việc riêng. ;)

Điều này khiến tôi mất một số thời gian nghiêm túc, và thực sự là một phần cẩu thả về phía Apple, nhưng nói chung tôi không thể phàn nàn.

0

GDB từ FSF chỉ hỗ trợ mã JIT rất recently.

Tôi không biết liệu GDB do Apple cung cấp có hỗ trợ cho nó hay không (bạn có nhận được dấu vết ngăn xếp hợp lý không?). Nếu có, hỗ trợ này là (rõ ràng) không đầy đủ.

+0

Điều gì khiến bạn nghĩ rằng điều này liên quan đến JIT, hoặc Apple sẽ gửi một gdb không hoạt động hoàn toàn với trình biên dịch mà họ đã viết? – user57368

+0

Ngăn xếp có vẻ chính xác, hiển thị tất cả các chức năng của tôi. Đó là các vars cục bộ bị thiếu. – glebd

+0

Nhưng llvm có thể tạo mã gốc, không phải bytecode. – osgx

4

Điều này có thể hữu ích. Thử tắt "Tối ưu hóa liên kết thời gian" trong tùy chọn xây dựng của dự án. Điều đó đã khắc phục được sự cố tôi gặp phải khi thiếu các biểu tượng gỡ lỗi.

Thực tế, điều đó đã khắc phục được một loạt các sự cố lạ mà tôi gặp phải với Clang. Tôi muốn nói rằng tính năng chỉ là quá chảy máu cạnh sử dụng được nêu ra.

5

Đảm bảo bạn đang xây dựng với các biểu tượng Lùn và không tối ưu hóa. llvm là một back-end mới, và không phải tất cả các codegen được tối ưu hóa của nó được nối với thế hệ biểu tượng debug.

0

Tôi đã gặp sự cố này và giải quyết vấn đề bằng cách đặt dấu chọn bên cạnh mục menu: "Project> Set Active Build Configuration> Debug". Trước đây, tùy chọn "Phát hành" đã được chọn. Người dân địa phương bắt đầu hiển thị trong trình gỡ lỗi cho dự án của tôi từ đó trở đi.

Các vấn đề liên quan