GDB - Hata Ayıklama Programları

Başlarken: Başlatma ve Durdurma

  • gcc -g myprogram.c

    • Myprogram.c dosyasını hata ayıklama seçeneği (-g) ile derler. Hala bir a.out alırsınız, ancak ham bellek konumları (eğlenceli değil) yerine GDB içindeki değişkenleri ve işlev adlarını kullanmanıza izin veren hata ayıklama bilgilerini içerir.

  • gdb a.out

    • GDB'yi a.out dosyasıyla açar, ancak programı çalıştırmaz. Bir komut istemi (gdb) göreceksiniz - tüm örnekler bu komut istemindendir.

  • r

  • r arg1 arg2

  • r <dosya1

    • Önceden yüklenmiş "a.out" çalıştırmanın üç yolu. Doğrudan çalıştırabilir (r), argümanlar iletebilir (r arg1 arg2) veya bir dosyada besleyebilirsiniz. Genellikle çalıştırmadan önce kesme noktaları belirlersiniz.

  • help

  • h kesme noktaları

    • Yardım konularını listeler (yardım) veya belirli bir konuda yardım alır (h kesme noktaları). GDB iyi belgelenmiştir.

  • q - GDB'den çık

Kodda Adım Adım

Stepping, programınızın yolunu izlemenize ve çökmekte olan veya geçersiz girdi döndüren kodu sıfırlamanıza izin verir.

  • l

  • l 50

  • işlevim

    • Geçerli satır (l), belirli bir satır (l 50) veya bir işlev (işlev) için 10 satır kaynak kodu listeler.

  • Sonraki

    • Programı bir sonraki satıra kadar çalıştırır, ardından duraklatır. Mevcut satır bir işlevse, tüm işlevi yürütür ve sonra duraklar.next kodunuzda hızlıca gezinmek için iyidir.

  • adım

    • Bir sonraki talimatı çalıştırır, satırı değil. Mevcut talimat bir değişken ayarlıyorsa, aynıdırnext. Bu bir işlevse, işleve atlar, ilk ifadeyi yürütür ve sonra durur.step kodunuzun ayrıntılarına dalmak için iyidir.

  • bitiş

    • Mevcut işlevi yürütmeyi bitirir, ardından duraklatır (dışarı çıkma da denir). Yanlışlıkla bir işleve girdiyseniz kullanışlıdır.

Kesme Noktaları veya İzleme Noktaları

Kesme noktaları, hata ayıklamada önemli bir rol oynar. Belirli bir noktaya ulaştığında bir programı duraklatırlar (bozarlar). Değişkenleri inceleyip değiştirebilir ve yürütmeye devam edebilirsiniz. Bu, bazı giriş hataları meydana geldiğinde veya girişler test edilecek olduğunda faydalıdır.

  • kırılma 45

  • fonksiyonumu boz

    • 45. satırda veya işlevimde bir kesme noktası ayarlar. Kesme noktasına ulaştığında program duraklayacaktır.
  • x == 3 izle

    • Bir koşul değiştiğinde (x == 3 değiştiğinde) programı duraklatan bir izleme noktası ayarlar. İzleme noktaları, her işlev çağrısında kırılmak zorunda kalmadan belirli girdiler (myPtr! = NULL) için harikadır .

  • devam et

    • Bir kesme noktası / izleme noktası tarafından duraklatıldıktan sonra yürütmeyi sürdürür. Program, bir sonraki kesme noktasına / izleme noktasına ulaşana kadar devam edecektir.

  • N sil

    • N kesme noktasını siler (kesme noktaları, oluşturulduğunda numaralandırılır).

Değişkenleri Ayarlama

Değişkenleri çalışma zamanında görüntülemek ve değiştirmek, hata ayıklamanın kritik bir parçasıdır. Sorunların temel nedenini bulmak için işlevlere geçersiz girdiler sağlamayı veya başka test senaryoları çalıştırmayı deneyin. Tipik olarak, program duraklatıldığında değişkenleri görüntüler / ayarlarsınız.

  • x yazdır

    • X değişkeninin mevcut değerini yazdırır. Orijinal değişken isimlerini kullanabilmek (-g) bayrağına neden ihtiyaç duyulduğudur; düzenli olarak derlenen programlar bu bilgileri kaldırır.

  • x = 3 olarak ayarlayın

  • x = y olarak ayarla

    • X'i bir set değerine (3) veya başka bir değişkene (y) ayarlar
  • işlevimi çağır ()

  • myotherfunction (x) çağır

  • strlen'i ara (mystring)

    • Kullanıcı tanımlı veya sistem işlevlerini çağırır. Bu son derece kullanışlıdır, ancak buggy işlevlerini çağırmaya dikkat edin.

  • ekran x

    • Her adımdan veya duraklamadan sonra gösterilen x değişkeninin değerini sürekli olarak görüntüler. Sürekli olarak belirli bir değeri kontrol ediyorsanız kullanışlıdır.

  • gösterilmeyen x

    • Display komutu tarafından görüntülenen bir değişkenin sabit görüntüsünü kaldırır.

Geri İzleme ve Çerçeveleri Değiştirme

Yığın, geçerli işlev çağrılarının bir listesidir - size programda nerede olduğunuzu gösterir. Bir çerçeve gibi bağımsız değişken olarak tek bir işlev çağrısı detaylarını saklar.

  • bt

    • Backtracesveya geçerli programda nerede olduğunuzu göstermek için geçerli işlev yığınını yazdırır. Ana çağrılar, c () çağrısı yapan b () işlevini çağıran a () işlevi ise, geri izleme

  • c <= current location 
    b 
    a 
    main
  • up

  • aşağı

    • İşlev yığınında bir sonraki kareye yukarı veya aşağı gitme. Eğer içindeysenc, taşınabilirsin b veya a yerel değişkenleri incelemek için.

  • dönüş

    • Geçerli işlevden döner.

Sinyalleri Yönetme

Sinyaller, zamanlayıcı veya hata gibi belirli olaylardan sonra atılan mesajlardır. GDB bir sinyalle karşılaştığında duraklayabilir; bunun yerine onları görmezden gelmek isteyebilirsiniz.

  • tutamaç [işaret adı] [eylem]

  • SIGUSR1 nostop işlemek

  • SIGUSR1 noprint işlemek

  • işle SIGUSR1 yoksay

    • GDB'ye belirli bir sinyali (SIGUSR1) oluştuğunda göz ardı etmesini söyleyin. Farklı seviyelerde görmezden gelme vardır.