bugpoint - alat reduksi test case otomatis
bugpoint [options] [input LLVM ll/bc files] [LLVM passes] --args program arguments
bugpoint mempersempit sumber masalah pada alat dan penerusan LLVM. Ini dapat digunakan untuk men-debug tiga jenis kegagalan: pengoptimal mogok, kesalahan kompilasi oleh pengoptimal, atau pembuatan kode asli yang buruk (termasuk masalah dalam kompiler statis dan JIT). Ini bertujuan untuk mengurangi kasus uji besar menjadi kecil, yang berguna. Untuk informasi selengkapnya tentang desain dan cara kerja bagian dalam bugpoint, serta saran untuk menggunakan bugpoint, lihat Alat bugpoint LLVM: desain dan penggunaan di distribusi LLVM.
Muat perpustakaan objek bersama dinamis ke dalam program pengujian setiap kali dijalankan. Ini berguna jika Anda men-debug program yang bergantung pada pustaka non-LLVM (seperti pustaka X atau kutukan) untuk dijalankan.
Tambahkan kode keluar program uji ke file keluaran sehingga perubahan kode keluar dianggap sebagai kegagalan uji. Default ke false.
Teruskan semua argumen yang ditentukan setelah --args ke program pengujian setiap kali dijalankan. Perhatikan bahwa jika salah satu dari perdebatan program dimulai dengan "-", Anda harus menggunakan:
bugpoint [bugpoint args] --args -- [program args]
"--" tepat setelah opsi --args memberi tahu bugpoint untuk mempertimbangkan opsi apa pun yang dimulai dengan "- " untuk menjadi bagian dari opsi --args, bukan sebagai opsi untuk bugpoint itu sendiri.
Teruskan semua argumen yang ditentukan setelah --tool-args ke alat LLVM yang sedang diuji (llc, lli, dll.) setiap kali dijalankan. Anda harus menggunakan opsi ini dengan cara berikut:
bugpoint [bugpoint args] --tool-args -- [tool args]
"--" tepat setelah opsi --tool-args memberi tahu bugpoint untuk mempertimbangkan opsi apa pun yang dimulai dengan "-" untuk menjadi bagian dari opsi --tool-args, bukan sebagai opsi untuk bugpoint itu sendiri. (Lihat --args, di atas.)
Teruskan semua argumen yang ditentukan setelah --safe-tool-args ke alat eksekusi "safe".
Teruskan semua argumen yang ditentukan setelah --gcc-tool-args ke pemanggilan gcc.
Teruskan semua argumen yang ditentukan setelah --opt-args ke pemanggilan opt.
Jangan jalankan lintasan yang ditentukan untuk membersihkan dan mengurangi ukuran program pengujian. Secara default, bugpoint menggunakan pass ini secara internal saat mencoba mengurangi program pengujian. Jika Anda mencoba menemukan bug di salah satu pass ini, bugpoint mungkin macet.
Gunakan valgrind untuk menemukan kesalahan dalam fase pengoptimalan. Ini akan memungkinkan bugpoint untuk menemukan masalah tanpa gejala yang disebabkan oleh kesalahan manajemen memori.
Terus mengacak pass yang ditentukan dan menjalankannya pada program pengujian hingga bug ditemukan atau pengguna menghentikan bugpoint.
Cetak ringkasan opsi baris perintah.
Buka namafile dan alihkan masukan standar dari program pengujian, setiap kali dijalankan, untuk berasal dari file tersebut.
Muat plugin objek dinamis ke bugpoint itu sendiri. Objek ini harus mendaftarkan pass pengoptimalan baru. Setelah dimuat, objek akan menambahkan opsi baris perintah baru untuk mengaktifkan berbagai pengoptimalan. Untuk melihat daftar lengkap pengoptimalan yang baru, gunakan opsi -help dan --load bersamaan; Misalnya:
bugpoint --load myNewPass.so -help
Menentukan batas atas penggunaan memori pengoptimalan dan codegen. Setel ke nol untuk menonaktifkan batas.
Setiap kali program pengujian menghasilkan keluaran pada aliran keluaran standarnya, ia harus cocok dengan konten namaberkas ("keluaran referensi"). Jika Anda tidak menggunakan opsi ini, bugpoint akan berusaha menghasilkan output referensi dengan mengompilasi program dengan backend "aman" dan menjalankannya.
Setiap kali program pengujian dikompilasi, bugpoint harus membuat kode untuknya menggunakan pembuat kode yang ditentukan. Opsi ini memungkinkan Anda memilih juru bahasa, kompiler JIT, kompiler kode asli statis, atau perintah khusus (lihat --exec-command) masing-masing.
Saat men-debug pembuat kode, bugpoint harus menggunakan pembuat kode yang ditentukan sebagai pembuat kode "aman". Ini adalah generator kode yang dikenal baik yang digunakan untuk menghasilkan "output referensi" jika belum disediakan, dan untuk mengkompilasi bagian dari program yang dikecualikan dari testcase. Opsi ini memungkinkan Anda untuk memilih masing-masing kompiler kode asli statis, atau perintah khusus, (lihat --exec-command). Penerjemah dan backend JIT saat ini tidak dapat digunakan sebagai backend "aman".
Opsi ini menentukan perintah untuk digunakan dengan opsi --run-custom dan --safe-custom untuk menjalankan kasus uji bitcode. Ini dapat berguna untuk kompilasi silang.
Opsi ini menentukan perintah untuk digunakan dengan opsi --compile-custom untuk mengompilasi testcase bitcode. Perintah harus keluar dengan kode keluar yang gagal jika file "menarik" dan harus keluar dengan kode keluar yang berhasil (mis. 0) jika tidak (ini sama seperti jika macet pada input "menarik").
Ini dapat berguna untuk menguji keluaran kompiler tanpa menjalankan tautan apa pun atau menjalankan tahapan. Untuk menghasilkan pengujian unit yang dikurangi, Anda dapat menambahkan arahan CHECK ke kasus pengujian dan meneruskan nama skrip perintah kompilasi yang dapat dieksekusi dalam formulir ini:
#!/bin/sh llc "$@" not FileCheck [bugpoint input file].ll < bugpoint-test-program.s
Skrip ini akan "gagal" selama FileCheck lolos. Jadi hasilnya adalah bitcode minimum yang lolos FileCheck.
Opsi ini menentukan jalur ke perintah untuk dieksekusi dengan opsi --safe-{int,jit,llc,custom}.
Perilaku default bugpoint adalah untuk mencetak "
Jika bugpoint berhasil menemukan masalah, itu akan keluar dengan 0. Sebaliknya, jika terjadi kesalahan, itu akan keluar dengan nilai bukan nol.
opt(1)
Dikelola oleh Tim LLVM (https://llvm.org/).
2003-2023, Proyek LLVM