bugpoint - công cụ giảm trường hợp thử nghiệm tự động
bugpoint [options] [input LLVM ll/bc files] [LLVM passes] --args program arguments
điểm lỗi thu hẹp nguồn gốc của sự cố trong công cụ LLVM và vượt qua. Nó có thể được sử dụng để gỡ lỗi ba loại lỗi: sự cố trình tối ưu hóa, trình tối ưu hóa biên dịch sai hoặc tạo mã gốc không hợp lệ (bao gồm các sự cố trong trình biên dịch JIT và tĩnh). Nó nhằm mục đích giảm các trường hợp thử nghiệm lớn thành những trường hợp nhỏ, hữu ích. Để biết thêm thông tin về thiết kế và hoạt động bên trong của bugpoint, cũng như lời khuyên về việc sử dụng bugpoint, hãy xem Công cụ bugpoint LLVM: thiết kế và sử dụng trong bản phân phối LLVM.
Tải đối tượng chia sẻ động thư viện vào chương trình thử nghiệm bất cứ khi nào nó được chạy. Điều này hữu ích nếu bạn đang gỡ lỗi các chương trình phụ thuộc vào các thư viện không phải LLVM (chẳng hạn như thư viện X hoặc thư việncurs) để chạy.
Nối mã thoát của chương trình thử nghiệm vào tệp đầu ra để thay đổi mã thoát được coi là lỗi thử nghiệm. Mặc định là sai.
Chuyển tất cả các đối số được chỉ định sau --args cho chương trình thử nghiệm bất cứ khi nào chương trình chạy. Lưu ý rằng nếu bất kỳ đối số chương trình nào bắt đầu bằng "-", thì bạn nên sử dụng:
bugpoint [bugpoint args] --args -- [program args]
"--" ngay sau tùy chọn --args cho biết bugpoint xem xét bất kỳ tùy chọn nào bắt đầu bằng "-" là một phần của tùy chọn --args, không phải là tùy chọn cho chính bugpoint.
Chuyển tất cả các đối số được chỉ định sau --tool-args cho công cụ LLVM đang được kiểm tra (llc, lli, v.v.) bất cứ khi nào công cụ này chạy. Bạn nên sử dụng tùy chọn này theo cách sau:
bugpoint [bugpoint args] --tool-args -- [tool args]
"--" ngay sau tùy chọn --tool-args cho điểm lỗi xem xét bất kỳ tùy chọn nào bắt đầu bằng "-" để trở thành một phần của tùy chọn --tool-args, chứ không phải là tùy chọn cho chính điểm lỗi. (Xem --args ở trên.)
Chuyển tất cả các đối số được chỉ định sau --safe-tool-args cho công cụ thực thi "an toàn".
Chuyển tất cả các đối số được chỉ định sau --gcc-tool-args cho lệnh gọi gcc.
Chuyển tất cả các đối số được chỉ định sau --opt-args cho lệnh gọi opt.
Không chạy các pass đã chỉ định để dọn dẹp và giảm kích thước của chương trình thử nghiệm. Theo mặc định, bugpoint sử dụng nội bộ các lượt này khi cố gắng giảm các chương trình thử nghiệm. Nếu bạn đang cố gắng tìm một lỗi trong một trong các lượt này, thì điểm lỗi có thể gặp sự cố.
Sử dụng valgrind để tìm lỗi trong giai đoạn tối ưu hóa. Điều này sẽ cho phép bugpoint tìm ra các sự cố không có triệu chứng khác do quản lý sai bộ nhớ gây ra.
Liên tục chọn ngẫu nhiên các lượt đã chỉ định và chạy chúng trên chương trình thử nghiệm cho đến khi tìm thấy lỗi hoặc người dùng tiêu diệt điểm lỗi.
In một bản tóm tắt các tùy chọn dòng lệnh.
Mở tên tệp và chuyển hướng đầu vào tiêu chuẩn của chương trình thử nghiệm, bất cứ khi nào chương trình chạy, đến từ tệp đó.
Tải đối tượng động plugin vào chính bugpoint. Đối tượng này nên đăng ký các lượt tối ưu hóa mới. Sau khi được tải, đối tượng sẽ thêm các tùy chọn dòng lệnh mới để kích hoạt các tối ưu hóa khác nhau. Để xem danh sách tối ưu hóa hoàn chỉnh mới, hãy sử dụng đồng thời các tùy chọn -help và --load; Ví dụ:
bugpoint --load myNewPass.so -help
Chỉ định giới hạn trên đối với việc sử dụng bộ nhớ của quá trình tối ưu hóa và bộ mã hóa. Đặt thành 0 để tắt giới hạn.
Bất cứ khi nào chương trình thử nghiệm tạo đầu ra trên luồng đầu ra tiêu chuẩn của nó, thì đầu ra đó phải khớp với nội dung của tên tệp ("đầu ra tham chiếu"). Nếu bạn không sử dụng tùy chọn này, bugpoint sẽ cố gắng tạo đầu ra tham chiếu bằng cách biên dịch chương trình với phần phụ trợ "an toàn" và chạy nó.
Bất cứ khi nào chương trình thử nghiệm được biên dịch, bugpoint sẽ tạo mã cho chương trình đó bằng cách sử dụng trình tạo mã được chỉ định. Các tùy chọn này cho phép bạn chọn trình thông dịch, trình biên dịch JIT, trình biên dịch mã gốc tĩnh hoặc lệnh tùy chỉnh (xem --exec-command) tương ứng.
Khi gỡ lỗi trình tạo mã, điểm lỗi nên sử dụng trình tạo mã được chỉ định làm trình tạo mã "an toàn". Đây là một trình tạo mã tốt đã biết được sử dụng để tạo "đầu ra tham chiếu" nếu nó chưa được cung cấp và để biên dịch các phần của chương trình mà chúng bị loại khỏi trường hợp thử nghiệm. Các tùy chọn này cho phép bạn chọn trình biên dịch mã gốc tĩnh hoặc lệnh tùy chỉnh (xem --exec-lệnh) tương ứng. Trình thông dịch và phụ trợ JIT hiện không thể được sử dụng làm phụ trợ "an toàn".
Tùy chọn này xác định lệnh sẽ sử dụng với các tùy chọn --run-custom và --safe-custom để thực thi trường hợp kiểm tra mã bit. Điều này có thể hữu ích cho việc biên dịch chéo.
Tùy chọn này xác định lệnh sẽ sử dụng với tùy chọn --biên dịch tùy chỉnh để biên dịch trường hợp thử nghiệm mã bit. Lệnh sẽ thoát với mã thoát lỗi nếu tệp "thú vị" và sẽ thoát với mã thoát thành công (tức là 0) nếu không (điều này giống như khi nó bị lỗi trên đầu vào "thú vị").
Điều này có thể hữu ích để kiểm tra đầu ra của trình biên dịch mà không chạy bất kỳ giai đoạn liên kết hoặc thực thi nào. Để tạo một bài kiểm tra đơn vị rút gọn, bạn có thể thêm lệnh CHECK vào trường hợp kiểm tra và chuyển tên của tập lệnh lệnh biên dịch thực thi ở dạng sau:
#!/bin/sh llc "$@" not FileCheck [bugpoint input file].ll < bugpoint-test-program.s
Tập lệnh này sẽ "không thành công" miễn là FileCheck vượt qua. Vì vậy, kết quả sẽ là mã bit tối thiểu vượt qua FileCheck.
Tùy chọn này xác định đường dẫn đến lệnh để thực thi với tùy chọn --safe-{int,jit,llc,custom}.
Hành vi mặc định của bugpoint là in "
Nếu bugpoint thành công trong việc tìm ra sự cố, nó sẽ thoát với giá trị 0. Ngược lại, nếu xảy ra lỗi, nó sẽ thoát với giá trị khác không.
opt(1)
Được duy trì bởi Nhóm LLVM (https://llvm.org/).
2003-2023, Dự án LLVM