Aplikasi saya berjalan dengan baik tetapi gdb gagal melakukan debug dengan kesalahan berikut
(gdb) run
Starting program: /path/to/app
Unable to find Mach task port for process-id 83767: (os/kern) failure (0x5).
Saya menggunakan OS X Lion. Versi GDB adalah
$ gdb --version
GNU gdb 6.3.50-20050815 (Apple version gdb-1752) (Sat Jan 28 03:02:46 UTC 2012)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".
Jawaban:
Di Snow Leopard dan versi Mac OS yang lebih baru, itu tidak cukup untuk membuat kode yang
gdb
dapat dieksekusi.Anda harus mengikuti panduan ini untuk membuatnya berfungsi: http://www.opensource.apple.com/source/lldb/lldb-69/docs/code-signing.txt
Panduan ini menjelaskan cara melakukannya
lldb
, tetapi prosesnya persis samagdb
.sumber
sudo security add-trust
saluran tersebut? Bisakah saya menghapus.cer
file dari desktop saya sekarang?codesign -s gdb_codesign `which gdb`
membantu setelah panduan inisudo codesign -s gdb_codesign `which gdb-apple`
di macOS sierra.Ini berfungsi saat saya berganti ke
sudo gdb executableFileName
! :)sumber
gdb
sebagai root? Saya hanya ingin tahu karena Ini hanya debugger.rm -rf /
atau sesuatu yang juga merusak di mana Anda menimpa beberapa konfigurasi / binari yang diandalkan komputer Anda untuk memulai dan beroperasi secara normal.Anda perlu membuat sertifikat dan menandatangani gdb:
Akhirnya Anda bisa masuk gdb:
sudo codesign -s gdb-cert /usr/local/bin/ggdb
sudo ggdb ./myprog
sumber
Masalahnya adalah Anda tidak masuk sebagai pengguna root (yang tidak Anda inginkan). Anda perlu membuat sertifikat untuk gdb agar dapat mengakses. Ikuti tutorial ini dan Anda akan baik-baik saja ...
http://sourceware.org/gdb/wiki/BuildingOnDarwin
Jika semuanya gagal, cukup gunakan:
sudo gdb executableFileName
sumber
codesign -s gdb-cert $(which gdb)
Untuk menandatanganigdb
aplikasi.Tautan ini memiliki langkah demi langkah yang paling jelas dan terperinci untuk membuat kesalahan ini hilang untuk saya.
Dalam kasus saya, saya harus memiliki kunci sebagai kunci "Sistem" jika tidak maka kunci tersebut tidak berfungsi (yang tidak disebutkan setiap url).
Juga membunuh
taskgated
adalah alternatif yang layak (dan lebih cepat) untuk memulai kembali.Saya juga mencopot MacPorts sebelum saya memulai proses ini dan mencopot pemasangan gdb saat ini menggunakan
brew uninstall gdb
.sumber
brew
.Saya membutuhkan perintah ini untuk membuatnya berfungsi di El Capitan:
sumber
Saya mengikuti tutorial ini , dan semuanya baik-baik saja.
sumber
Di MacOSX lldb perlu ditandatangani kode. Build Debug dan Rilis disetel ke tanda kode menggunakan sertifikat penandatanganan kode bernama lldb_codesign.
[Catatan: - lldb digunakan di mac sebagai gdb.]
sumber
Berikut adalah panduan yang sangat berguna yang memecahkan masalah saya (OSX 10.13.6).
codesign -fs gdbc /usr/local/bin/gdb
di terminal: ini meminta kata sandi rootsumber
Petunjuk ini berfungsi untuk OSX High Sierra dan hindari menjalankan gdb sebagai root (yuck!). Saya baru saja memperbarui dari OSX 10.13.2 ke 10.3.3. Saya pikir ini adalah saat gdb 8.0.1 (diinstal w / homebrew) mulai gagal untuk saya.
Saya mengalami kesulitan dengan instruksi orang lain. Setelah instruksi yang berbeda, semuanya menjadi berantakan. Jadi saya mulai segar. Saya kurang lebih mengikuti instruksi ini .
Bersihkan yang berantakan:
brew uninstall --force gdb # This deletes _all_ versions of gdb on the machine
Applications
->Utilities
->Keychain Access
, saya menghapus semua sertifikat dan kunci gdb sebelumnya (pastikan Anda tahu apa yang Anda lakukan di sini!). Tidak jelas apakah ini perlu, tetapi karena saya berusaha keras untuk mencoba membuat sertifikat dan kunci tersebut menggunakan instruksi lain, saya tetap menghapusnya. Saya memiliki kunci dan sertifikat di login dan sistem.Sekarang instal ulang gdb.
brew install gdb
Keychain Access
, masuk ke menuKeychain Access
->Certificate Assistant
->Create a Certificate
Pada halaman Informasi Sertifikat ke-2, saya membiarkan semua bidang kosong kecuali yang sudah diisi.
Pada halaman Key Pair Information, saya meninggalkan default
Pada Halaman Ekstensi Kendala Dasar, tidak ada yang diperiksa (default).
Pada halaman Ekstensi Nama Alternatif Subjek, saya membiarkan default dicentang dan tidak menambahkan apa pun.
Saya mengklik Buat dan diminta memasukkan kata sandi saya.
Kembali ke
Keychain Access
aplikasi, saya pergi keSystem
dan mengklik kanan padagdb-cert
dan di bawah menu dropdownTrust
, saya mengubah semua bidang menjadiAlways Trust
.Komputer yang di-boot ulang.
Di Terminal, saya lari
codesign -s gdb-cert /usr/local/bin/gdb
. Saya memasukkan kata sandi saya saat diminta.Di Terminal, saya lari
echo "set startup-with-shell off" >> ~/.gdbinit
Saya berlari
gdb myprogram
dan kemudianstart
di dalam konsol gdb. Di sini, saya yakin, itu meminta kata sandi saya. Setelah itu, semua proses berikutnya, tidak meminta kata sandi saya.sumber
Ini adalah pendekatan yang aneh tetapi berhasil untuk saya (MacOs HighSierra 10.13.3). Pasang CLion. Itu datang dengan gdb. Setelah menjalankan gdb menggunakan Terminal. Salin program gdb ke usr / local / bin / Anda. Tidak ada masalah masuk, sudo dll.
sumber
Mengikuti instruksi di sini Codesign gdb di macOS tampaknya menyelesaikan masalah ini, bagi saya, di macOS High Sierra (10.13.3).
sumber