คุณสามารถโพสต์คำสั่งที่มีประโยชน์และมีประโยชน์ที่สุดของคุณในขณะที่คุณเรียกใช้ดีบักเกอร์เช่น gdb หรือ dbx
คุณสามารถโพสต์คำสั่งที่มีประโยชน์และมีประโยชน์ที่สุดของคุณในขณะที่คุณเรียกใช้ดีบักเกอร์เช่น gdb หรือ dbx
คำตอบ:
info locals
- ดูตัวแปรท้องถิ่นทั้งหมด รายการ - ดูแหล่งที่มา; rbreak - หยุดการทำงานของฟังก์ชั่นการจับคู่การแสดงออกปกติ
set print object on
สำหรับองค์ประกอบ polymorphic และset print elements 0
สองคำสั่งที่ฉันใช้บ่อยมาก มีประโยชน์มาก
t a a bt
(ความหมายthread apply all backtrace
) สามารถใช้กับคำสั่งอื่น ๆ (เกือบ) ทั้งหมดได้ bt full
ที่มีประโยชน์โดยเฉพาะอย่างยิ่งกับ
เริ่ม gdb ด้วยส่วนติดต่อผู้ใช้แบบข้อความ
gdb -tui
เริ่มต้นใน gdb 7.0 มีการดีบักแบบย้อนกลับได้ดังนั้นคำสั่งโปรดใหม่ของคุณคือ:
* reverse-continue ('rc') -- Continue program being debugged but run it in reverse
* reverse-finish -- Execute backward until just before the selected stack frame is called
* reverse-next ('rn') -- Step program backward, proceeding through subroutine calls.
* reverse-nexti ('rni') -- Step backward one instruction, but proceed through called subroutines.
* reverse-step ('rs') -- Step program backward until it reaches the beginning of a previous source line
* reverse-stepi -- Step backward exactly one instruction
* set exec-direction (forward/reverse) -- Set direction of execution.
แทนที่จะเปิดตัว GDB ด้วยพารามิเตอร์ "-tui" คุณสามารถสลับไปยังโหมดข้อความหลังจากผ่านไประยะหนึ่งโดยใช้ "wh"
C-x a
มันเป็นเรื่องจริง คุณยังสามารถสลับมุมมองด้วยC-x 1
และC-x 2
เมื่ออยู่ในโหมด tui เพื่อดูชุดประกอบได้เช่นกัน (ถ้าจำเป็น)
thread apply all bt
หรือthread apply all print $pc
: สำหรับการค้นหาอย่างรวดเร็วว่าเธรดทั้งหมดกำลังทำอะไร
ตัวอย่างเช่นแมโครที่กำหนดในstl-views.gdb
ใช้-command=<file with gdb commands>
ตัวเลือกขณะยิง gdb -x <command file>
เช่นเดียวกับ ไฟล์คำสั่งนี้สามารถมีคำสั่ง gdb เช่นเบรกพอยต์, ตัวเลือกและอื่น ๆ มีประโยชน์ในกรณีที่จำเป็นต้องเรียกใช้งานไฟล์ใดไฟล์หนึ่งผ่านการดีบักแบบต่อเนื่องโดยใช้ gdb
-iex
ตัวเลือกเพื่อเพิ่มแต่ละคำสั่งในบรรทัดคำสั่ง gdb
gdb การเขียนสคริปต์เป็นกลอุบายที่ดีนอกเหนือจากที่ฉันชอบการตั้งค่าการเปิด / ปิดการล็อคกำหนดการเพื่อป้องกันไม่ให้การทำงานของหัวข้ออื่น ๆ เมื่อคุณกำลังก้าวเข้ามาในหนึ่ง
set scheduler-locking on
inside gdb
เธรดข้อมูลเพื่อแสดงรายการเธรดที่ใช้งานอยู่ทั้งหมดและ f (#) -> # หมายเลขเธรดที่คุณต้องการเปลี่ยน
บางครั้งฉันใช้ gdb เพื่อแปลงจากฐานสิบหกเป็นทศนิยมหรือไบนารีมันมีประโยชน์มากแทนที่จะเปิดเครื่องคิดเลข
แทนที่จะเริ่ม gdb ด้วยตัวเลือก - ตุ๋ยเพื่อดูกระบวนการลูกที่มีหน้าจอที่ไฮไลต์ที่บรรทัดการประมวลผลของรหัสอยู่ในโปรแกรมของคุณกระโดดเข้าและออกจากคุณลักษณะนี้ด้วย Cx o และ Cx a สิ่งนี้มีประโยชน์หากคุณกำลังใช้คุณสมบัติและสิ่งที่ไม่ควรใช้ชั่วคราวเพื่อให้คุณสามารถใช้ลูกศรขึ้นเพื่อรับคำสั่งก่อนหน้า
focus cmd
เพื่อให้ลูกศรขึ้น / ลงทำงาน focus src
คุณสลับกลับไปใช้
สิ่งนี้มีประโยชน์ฉันแน่ใจว่ามันสามารถปรับปรุงได้ แต่โปรดช่วย:
define mallocinfo
set $__f = fopen("/dev/tty", "w")
call malloc_info(0, $__f)
call fclose($__f)
ในการดีบัก STL ให้เพิ่มเนื้อหาใน. gdbinit ทำตามคำแนะนำเหล่านี้: