Mengapa breakpoint saya tidak berfungsi?

112

Saya telah menetapkan breakpoint tetapi Xcode tampaknya mengabaikannya.

AlanKley
sumber
2
ProdukBersih membantu saya
Alexander Bekert
Saya harus melakukan restart penuh dengan komputer saya agar mereka berfungsi kembali, dan sekarang mereka menjadi super buggy. Saya menggunakan xcode 10.2.1.
llamacorn
2
Xcode 11, Restart & Bersihkan Xcode tidak Berfungsi, Restart Mac tidak Berfungsi. Hapus aplikasi di perangkat dan buat kembali perbaikan masalah ini. Semoga ini bisa membantu seseorang
Randall Wang

Jawaban:

148

Pertama-tama, saya setuju 100% dengan orang-orang sebelumnya yang mengatakan MATIKAN Load Symbols Lazily .

Saya memiliki dua hal lagi untuk ditambahkan.

(Saran pertama saya terdengar jelas, tetapi pertama kali seseorang menyarankannya kepada saya, reaksi saya berjalan seperti ini: "ayolah, tolong, Anda benar-benar berpikir saya tidak akan tahu lebih baik ...... oh.")

  1. Pastikan Anda tidak secara tidak sengaja menyetel "Konfigurasi Build Aktif" ke "Rilis".

  2. Di bawah "Target" di tampilan pohon grafis proyek Anda, klik kanan pada Target Anda dan lakukan "Dapatkan Info." Cari properti bernama "Generate Debug Symbols" (atau serupa) dan pastikan ini sudah DIPERIKSA (alias AKTIF). Selain itu, Anda dapat mencoba mencari (juga di Target >> Dapatkan Info) properti yang disebut "Debug Information Format" dan menyetelnya ke "Dwarf dengan file dsym".

Ada sejumlah properti lain di bawah Target >> Dapatkan Info yang mungkin memengaruhi Anda. Carilah hal-hal seperti mengoptimalkan atau mengompresi kode dan MENONAKTIFKAN hal-hal itu (saya menganggap Anda bekerja dalam mode debug, jadi ini bukan saran yang buruk). Juga, cari hal-hal seperti simbol pengupasan dan pastikan itu juga MATI. Misalnya, "Strip Linked Product" harus disetel ke "No" untuk target Debug.

bersifat pestofagus
sumber
8
Di XCode 4.5.2 saya mengalami masalah ini dan ternyata itu karena saya telah mengaktifkan "Optimasi waktu
tautan
6
Untuk mengubah Konfigurasi Build, masuk ke Product -> Scheme -> Edit Scheme, di bawah Run - Info. Bagi saya yang berhasil adalah memeriksa "Debug Executable" di menu itu.
Jeffrey Sun
2
Membajak jawaban teratas untuk menambahkan bahwa sintaks Bison tampaknya menjadi penyebab lain (eksotis) dari breakpoints tidak berfungsi (lihat jawaban saya di bawah). Semoga akan menghemat waktu untuk orang berikutnya dengan masalah itu.
Dave
2
Ini juga sangat mudah untuk secara tidak sengaja mengaktifkan aktivasi breakpoint dengan ⌘Y. Jadi hati-hatilah, anak-anak.
dsgrnt
1
Saya mencoba poin nomor 1 dan berhasil untuk saya. Sangat membantu saya. Suara positif.
NSPratik
49

Di Xcode 7, yang berhasil untuk saya adalah:

1) Pastikan target -> skema -> Run - dalam mode Debug (telah Rilis)

2) Pastikan untuk memeriksa opsi "Debug executable" lihat di bawah:

masukkan deskripsi gambar di sini

Oded Regev
sumber
4
Inilah yang sebenarnya terjadi pada saya, kotak centang tidak dicentang
anoop4real
Masalah yang sama bagi saya. Bukankah opsi itu harus diaktifkan secara default (XCode 8.3)? Bukankah kita seharusnya semua devs, toh mau debug?
dgmz
Bekerja untuk saya di Xcode 9.3, akan sangat bagus jika Anda memberikan gambar lain untuk opsi 1.
Kazi Abdullah Al Mamun
24

Buka preferensi Xcode Debugging. Pastikan bahwa "Muat Simbol dengan malas" TIDAK dipilih.

AlanKley
sumber
7
Sayangnya tidak ada preferensi "debugging" di Xcode 6, dan "lazily" tidak muncul dalam dokumentasi. Mendesah.
Oscar
1
baiklah, sekarang saya tidak dapat menemukan opsi 'Load Symbols Lazily' di XCode 6
RNA
14

Saya baru saja mengalami masalah yang sama (lagi). Setelah memeriksa tiga kali "Muat simbol dengan malas" dan menghapus serta men-debug tanda pembuatan info, saya melakukan hal berikut:

  1. keluar dari Xcode
  2. buka jendela terminal dan cd ke direktori proyek
  3. cd ke direktori .xcodeproj
  4. hapus semuanya kecuali file .pbxproj (saya punya frank.mode1v3 dan frank.pbxuser)

Anda dapat menyelesaikan tugas yang sama di finder dengan mengklik kanan / option pada bundel .xcodeproj dan memilih "Show Package Contents".

Ketika saya me-restart Xcode, semua jendela saya telah diatur ulang ke posisi default, dll, tetapi breakpoint berfungsi!

Frank Szczerba
sumber
2
Ini berfungsi, tetapi menghapus semua preferensi Anda ... Ini harus dilakukan ketika tidak ada yang berhasil.
Rémi Doolaeghe
bekerja untuk saya, terima kasih. Saya bertanya-tanya mengapa Xcode menyebalkan sebanyak itu. Xcode adalah perangkat lunak terburuk yang pernah ditulis oleh Apple.
Bebek
Wow, umurnya 5 tahun. Sulit dipercaya itu masih berfungsi, dan itu masih menjadi masalah!
Frank Szczerba
Tidak berhasil untuk saya. Saya menjalankan Xcode 6.01. Sekarang ketika saya membangun, saya menerima beberapa kesalahan file yang hilang. Saya mengembalikan kode saya untuk diselesaikan.
Native_Mobile_Arch_Dev
Hanya harus memulai ulang Xcode, kasus saya karena versi git, saat melakukan data status antarmuka pengguna xcode.
Juan Boero
13

Untuk Xcode 4.x: Goto Product> Debug Workflow dan hapus centang "Show Disassembly When Debugging".

Untuk Xcode 5.x Goto Debug> Debug Workflow dan hapus centang "Show Disassembly When Debugging".

bneupaane
sumber
11

Alasan lain

Setel DeploymentPostprocessingke NO di BuildSettings - detailnya di sini

Pendeknya -

Mengaktifkan pengaturan ini menunjukkan bahwa biner harus dihilangkan dan mode file, pemilik, dan informasi grup harus diatur ke nilai standar. [DEPLOYMENT_POSTPROCESSING]

masukkan deskripsi gambar di sini

gbk
sumber
Setelah memperbarui ke XCode 7, Pengaturan ini entah bagaimana YEShanya ada di saya subprojectdan kemudian breakpoint tidak berfungsi subprojects. Dan setelah diatur NO, itu sempurna!
Maheswaran Ravisankar
Ini bekerja untuk saya hanya setelah membersihkan proyek sehingga pembangunan kembali sepenuhnya akan dilakukan.
Berlari
8

Lihat posting ini: Breakpoints tidak berfungsi di Xcode? . Anda mungkin menekan "Run" daripada "Debug" dalam hal ini program Anda tidak berjalan dengan bantuan gdb, dalam hal ini Anda tidak dapat mengharapkan breakpoint bekerja!

Soong
sumber
Di Xcode 6.4, sekarang hanya ada tombol Run dan apakah itu menjalankan konfigurasi debug atau tidak tergantung pada pengaturan skema yang dipilih saat ini.
pengguna2067021
6

Salah satu solusi yang mungkin untuk ini bisa .... pergi ke Produk> Skema> Edit skema> .. Di bawah Run> info> Executable centang "Debug executable".

Soropromo
sumber
Yang ini berhasil untuk saya setelah membenturkan kepala selama 2 hari.
Dileep Perla
senang itu membantu.
Soropromo
5

Ini membuat saya di Xcode 9 selama setengah hari yang membuat frustrasi. Itu akhirnya menjadi pengaturan debug sederhana.

Go Debug> Debug Workflow dan pastikan 'Always Show Disassembly' dimatikan. Sederhana seperti itu. :(

Gaz Long
sumber
Ini berhasil untuk saya, terima kasih
Md.Harish-Uz-Jaman Mridha Raju
5

Solusi untuk saya dengan XCode 9.4.1 (tidak berhenti di breakpoint apa pun):

Di bawah Build Target -> Build Settings -> Optimization Level: Beralih dari "Optimize for speed" -> "No optimization" (sekarang lebih lambat tapi berfungsi)

Strinder
sumber
5

Apa yang memecahkannya dalam kasus saya cukup sederhana, di Xcode - Product - Clean Build Folder diikuti oleh Product - Run (bukan tombol Play Xcode).

(Memiliki masalah pada Xcode 11 -beta 4 setelah beralih ke pengujian unit dengan tekan lama tombol putar Xcode)

Lukas
sumber
4

Datang ke halaman ini dengan masalah yang sama (kode C di Xcode 6 tidak berhenti di breakpoint) dan tidak ada solusi di atas yang berhasil (proyek ini praktis di luar kotak, pengaturan-bijaksana, begitu sedikit peluang untuk salah satu pengaturan debugger untuk disetel ke nilai yang salah) ...

Setelah membuang beberapa waktu untuk mengurangi masalah, akhirnya saya menemukan pelakunya (untuk kode saya):

Xcode (/ LLVM) tidak menyukai #lineperintah preprocessor gaya Bison .

Menghapusnya memperbaiki masalah (debugger berhenti di breakpoint saya).

Dave
sumber
4

Untuk Xcode 4:

go Product -> Debug ->  Activate Breakpoints
evya
sumber
Terima kasih! ini membantu. Saya akan memposting ini sendiri, tampaknya saya mendorong ⌘Y entah bagaimana secara tidak sengaja.
Ovi
2

Saya punya banyak masalah dengan breakpoint di Xcode (2.4.1). Saya menggunakan proyek yang hanya berisi proyek lain (seperti Solusi di Visual Studio). Saya kadang-kadang menemukan bahwa breakpoint tidak berfungsi sama sekali kecuali ada setidaknya satu breakpoint yang ditetapkan dalam proyek awal (yaitu yang berisi titik masuk untuk kode saya). Jika satu-satunya breakpoint ada di project "level yang lebih rendah", mereka akan diabaikan begitu saja.

Sepertinya Xcode hanya menangani operasi breakpoint dengan benar jika Anda bertindak pada breakpoint saat Anda berada dalam proyek yang berisi baris sumber tempat breakpoint berada.

Jika saya mencoba menghapus atau menonaktifkan breakpoint melalui proyek lain, tindakan tersebut terkadang tidak berpengaruh, meskipun debugger menunjukkannya. Jadi saya akan menemukan diri saya melanggar breakpoint yang dinonaktifkan, atau pada breakpoint (sekarang tidak terlihat) yang saya hapus sebelumnya.

Charles Anderson
sumber
2

Saya telah membuat breakpoint saya tidak berfungsi dan kemudian selesai Membangun / Membersihkan Semua Target untuk membuatnya berfungsi kembali.


sumber
2

Saya pikir masalahnya mungkin ketidakcocokan antara versi perangkat dan Xcode. Saya mengalami masalah ini saat mencoba men-debug di iPhone 4S saya yang menjalankan iOS 5.0.1. Saya masih menggunakan Xcode 3.2.5. Saya mendapatkan simbol dari handset dengan memilih "gunakan perangkat ini untuk pengembangan" di jendela Organizer. Namun ponsel ini menolak untuk breakpoint. 3GS lama saya akan breakpoint, proyek Xcode yang sama, pengaturan yang sama ... hanya perangkat yang berbeda dan menjalankan iOS 4.0. Saya rasa ini adalah bug Xcode di 3.2.5, karena saya memiliki simbolnya. Setelah mencoba semua solusi yang diposting di sini sejauh ini, saya telah memutuskan solusi untuk masalah saya adalah melanjutkan dan meningkatkan ke XCode 4. Mungkin Anda tidak dapat melakukan debug secara efektif kecuali SDK dasar Anda setidaknya setinggi sistem yang akan di-debug. Mungkin itu sudah jelas - adakah yang bisa memastikan?

Sunting: Saya akan memperbarui ketika saya dapat mengonfirmasi bahwa ini benar.

Gavin
sumber
2

Menghapus folder Build saya memecahkan masalah bagi saya.

Jack Bellis
sumber
2

Itu telah terjadi hal yang sama pada saya di XCode 6.3.1. Saya berhasil memperbaikinya dengan:

  • Pergi ke View-> Navigators-> Show Debug Navigators
  • Klik kanan di root proyek -> Pindahkan Breakpoints (Jika memilih opsi Pengguna)
  • (Saya juga memilih opsi share breakpoints , meskipun saya tidak yakin apakah itu perlu).

Setelah melakukan perubahan itu saya mengatur Pindahkan titik putus kembali ke proyek, dan membatalkan pilihan Bagikan titik putus , dan masih berfungsi.

Saya tidak tahu persis mengapa tetapi ini mendapatkan breakpoint saya kembali.

Osk
sumber
Terima kasih! Ini juga memperbaiki respons lambat log debugging
Jim75
2

Untuk ini, dan juga untuk Xcode 6 dan di atasnya pastikan bahwa tombol status breakpoint diaktifkan (tombol seperti panah biru):

masukkan deskripsi gambar di sini

df611
sumber
1

Di Xcode 4

- Product menu > Manage Schemes
- Select the scheme thats having debugging problems (if only one choose that)
- Click Edit button at bottom
- Edit Scheme dialog appears
- in left panel click on Run APPNAME.app
- on Right hand panel make sure youre on INFO tab
- look for drop down DEBUGGER:
- someone had set this to None
- set to LLDB if this is your preferred debugger
- can also change BUILD CONFIGURATION drop down to Debug 
-      but I have other targets set to AdHoc which debug fine once Debugger is set
brian.clear
sumber
1

Saya menemukan masalahnya. Entah bagaimana, " Tampilkan Pembongkaran saat debugging " diaktifkan di Xcode saya yang menciptakan masalah itu. Ketika saya menonaktifkannya, semua debugger saya berhenti di kode sumber saya.

Anda dapat menemukannya di bawah: Product->Debug Workflow->Show Disassemblysaat debugging.

Perumal
sumber
1

Anda dapat Mengaktifkan / Menonaktifkan Breakpoints di menu dropdown masukkan deskripsi gambar di sini

Stan
sumber
1

Jika semuanya gagal, alih-alih breakpoint, Anda bisa memanggil fungsi berikut:

void BreakPoint(void) {
    int i=1;
    #if !__OPTIMIZE__
    printf("Code is waiting; hit pause to see.\n");
    while(i);
    #endif
}

Untuk melanjutkan, setel i ke nol secara manual, lalu tekan tombol lanjutkan.

William Jockusch
sumber
1

Saya mencoba semua hal di atas tetapi bagi saya hanya menonaktifkan breakpoint debugging sekali dan kemudian mengaktifkannya berhasil.

pengguna8032120
sumber
@IshantMrinal Mengapa ini tidak relevan? Pengguna memberikan jawaban yang sesuai dengan skenarionya.
Noel Widmer
0

Saat mengatur break point Anda, klik kanan dan Anda akan mendapatkan beberapa opsi tentang bagaimana break point ditangani (log vars dan lanjutkan, jeda eksekusi, dll)

Pastikan juga "Muat Simbol dengan malas" tidak dipilih dalam preferensi debug.

(Berlaku untuk Xcode 3.1, tidak yakin tentang versi sebelumnya / mendatang)

Scott Swezey
sumber
0

Pastikan juga bahwa distribusi AppStore dari aplikasi juga tidak diinstal di perangkat.


sumber
0

Hal lain yang perlu diperiksa adalah jika Anda memiliki file plist "Entitlements" untuk mode debug Anda (mungkin karena Anda melakukan hal-hal dengan Keychain), pastikan file plist memiliki baris "get-task-allow" = YES. Tanpa itu, debugging dan logging akan rusak.

davidcann.dll
sumber
0

Tampaknya ada 3 status untuk breakpoint di Xcode. Jika Anda mengkliknya, mereka akan melalui pengaturan yang berbeda. Biru tua diaktifkan, abu-abu dinonaktifkan dan saya kadang-kadang melihat biru pucat yang mengharuskan saya mengklik breakpoint lagi untuk mengubahnya ke warna biru tua.

Selain itu, pastikan Anda meluncurkannya dengan perintah debug, bukan perintah jalankan. Anda dapat melakukannya dengan menekan opsi + command + return, atau opsi Go (debug) dari menu run.

crackity_jones
sumber
0

Saya memiliki Xcode 3.2.3 SDK 4.1 Breakpoints akan gagal secara acak. Saya telah menemukan jika Anda membersihkan build dan menggunakan perintah sentuh di bawah build, mereka berfungsi lagi.

Damon McGIll
sumber
0

Inilah yang tidak jelas yang pernah saya temui: jika Anda bekerja di pustaka bersama (atau plugin), breakpoint Anda akan menjadi kuning saat startup, yang mungkin menyebabkan Anda memalu keyboard dengan frustrasi dan menghentikan proses debug. Nah, jangan lakukan itu! Simbol tidak akan dimuat sampai aplikasi memuat perpustakaan, di mana titik putus akan menjadi valid. Saya mengalami masalah ini dengan plugin browser ... BPs dinonaktifkan sampai saya menjelajahi halaman yang membuat plugin saya.

Tim Keating
sumber