Men-debug di XCode sebagai root

Dalam program saya, saya perlu membuat soket dan mengikatnya untuk mendengarkan port HTTP (80). Program ini berfungsi dengan baik ketika saya meluncurkannya dari baris perintah dengan sudo, meningkatkan izin untuk melakukan root. Berjalan di bawah XCode memberikan kesalahan 'izin ditolak' pada panggilan ke fungsi pengikatan (asio::ip::tcp::acceptor::bind()).

Bagaimana saya bisa melakukan debugging di bawah XCode?

Semua dilakukan dalam C++ dan boost.asio di Mac OS X 10.5 dengan XCode 3.1.2.


person Anton    schedule 23.06.2009    source sumber


Jawaban (6)


Pembaruan: Untuk Xcode 4.5 dan yang lebih baru, lihat jawaban ini sebagai gantinya.


Satu-satunya cara yang saya ketahui untuk melakukan apa yang Anda minta adalah menjalankan Xcode sebagai root.

>> sudo /Developer/Applications/Xcode.app/Contents/MacOS/Xcode

Setelah Anda menjalankan sebagai root, proses apa pun yang diluncurkan dari Xcode juga akan dijalankan sebagai root. Namun perlu diingat bahwa jika Anda membuat atau mengedit file apa pun, file tersebut akan dimiliki oleh root, yang berarti Anda harus chown file tersebut sebelum Anda dapat mengeditnya sebagai pengguna biasa terlebih dahulu.

Saya ingin cara Xcode mengatakan "Luncurkan proses sebagai root", tetapi sejauh yang saya tahu, tidak ada fungsi seperti itu yang tersedia.

Perhatikan bahwa Anda juga dapat menjalankan aplikasi dalam debugger baris perintah gdb untuk men-debug aplikasi Anda. Berlari

>> sudo gdb /path/to/my/application

Kemudian Anda dapat membiarkan Xcode tetap terbuka, memodifikasi sesuka hati, dan men-debug program Anda di dalam gdb. Inilah yang biasanya saya lakukan.

EDIT: Pembaca dari masa depan: lihat jawaban dari Alexander Stavonin; itu berbicara tentang bagaimana melakukan ini. Jika Anda setuju dengan kunci ssh dan mengaktifkan pengguna root di sistem Anda, jawabannya adalah jawabannya.

person BJ Homer    schedule 23.06.2009
comment
Terima kasih, tapi masalah dengan pemilik file ini sangat mengganggu. - person Anton; 23.06.2009
comment
Sayangnya metode Alexander sepertinya tidak berfungsi dengan XCode4, jadi metode sudo dalam jawaban ini sepertinya satu-satunya yang berfungsi. - person JosephH; 16.01.2012
comment
Pembaca dari masa depan: Xcode sekarang memiliki opsi bawaan: lihat jawaban Mike.R - person ReinstateMonica3167040; 07.04.2021

Di Xcode 4.5 Produk->Edit Skema: Lihat di tab Info di bawah Proses Debug Sebagai dan pilih < opsi em>root.

person Mike.R    schedule 28.12.2012

Xcode mampu menjalankan aplikasi debugging sebagai root. Untuk tujuan ini langkah-langkah berikut harus dilakukan:

  1. Aktifkan pengguna root untuk mesin lokal.

    A. Jalankan “Utilitas Direktori” (/System/Library/CoreServices/ Directory Utility.app)

    B. Pilih "Aktifkan Pengguna Root" dari menu Edit dan masukkan kata sandi root.

  2. Aktifkan pencatatan jarak jauh.

    A. Di System Preferences… -> Berbagi, centang Login Jarak Jauh. Opsi ini mengaktifkan ssh demon.

  3. Buat kunci ssh publik/pribadi dan salin kunci publik di folder .ssh/authorized_keys untuk pengguna root.

    A. Buka terminal di mesin lokal dan ketik ssh-keygen -t rsa

    B. Terima lokasi default dan ketik kata sandi untuk root.

    C. Login sebagai root su - dan buat direktori ~/.ssh. (~ == /var/root)

    D. Salin kunci publik ke root: cat ~/.ssh/id_rsa.pub | ssh root@localhost "cat - >> ~/.ssh/authorized_keys"

    e. Periksa apakah semuanya baik-baik saja. Ketik ssh root@localhost. Seharusnya tidak meminta kata sandi root.

  4. Aktifkan debugging jarak jauh melalui ssh di Xcode.

    A. Pilih «Dapatkan Info» dari menu drop-down di «Executables».

    B. Dalam pengaturan "Debugging" centang «Debug dapat dieksekusi dari jarak jauh melalui ssh» dan masukkan root@localhost sebagai info «Hubungkan ke».

  5. Semuanya seharusnya baik-baik saja sekarang ☺

Dari blog

person Alexander Stavonin    schedule 08.12.2009
comment
Sepertinya saya tidak dapat menemukan «Debug dapat dieksekusi dari jarak jauh melalui ssh» di Xcode4. Apakah itu? - person Yantao Xie; 13.10.2011
comment
Sayangnya, saya tidak tahu. Saat ini solusi terbaik bagi saya adalah GBD jika terjadi root debugging. - person Alexander Stavonin; 21.11.2011

XCode tidak lagi mendukung debugging jarak jauh sehingga sebagian besar jawaban ini menjadi usang.

Untuk men-debug suatu program sebagai root sekarang menjadi mudah. Di bawah menu Produk, gunakan "Edit Skema..." dan di panel "Jalankan" skema "Info", pilih "Proses debug sebagai root". Anda harus mengautentikasi satu kali.

Pada Xcode 4.5 saya mendapat kesalahan aneh sampai saya cukup Xcode dan memulai kembali.

person bitmusher    schedule 01.10.2012

Debug sebagai root melalui SSH.

Edit Active Executable -> Debugging -> Debug dapat dieksekusi dari jarak jauh melalui SSH.

person Cheng    schedule 20.11.2009
comment
Saya tidak bisa membuatnya berfungsi. Apa yang telah saya tetapkan di halaman ini: Saat menggunakan GDB Gunakan Pipa untuk input/output standar, Centang Debug yang dapat dieksekusi dari jarak jauh melalui SSH, Sambungkan ke: [email protected], Tidak dicentang Mulai dapat dieksekusi setelah memulai debugger. Dan ketika saya menjalankan aplikasi saya, ini menunjukkan dialog dengan otentikasi SSH tetapi memasukkan kata sandi saya sebagai frasa sandi memberikan Otentikasi gagal. Saya juga mencoba menggunakan nama pengguna saya tetapi tidak berhasil juga. Dan, omong-omong, aplikasinya tidak dimulai sama sekali. Apa yang saya lakukan salah? - person Anton; 21.11.2009

Jika Anda ingin men-debug server web yang berjalan pada port 443, Anda dapat menjalankannya pada port 8443 pada akun normal Anda dan kemudian melakukan: sudo ssh user@localhost -L 443:localhost:8443 -N

Kemudian Anda masih dapat menghubungi aplikasi Anda di port yang tepat, tetapi mendapatkan keuntungan menjalankan aplikasi sebagai pengguna biasa.

person Michael Grønager    schedule 14.03.2012