Bisakah saya menentukan bahwa saya ingin gdb untuk istirahat di baris x ketika char* x
menunjuk ke string yang nilainya sama "hello"
? Jika ya, bagaimana?
c
debugging
gdb
conditional-breakpoint
341008
sumber
sumber
strncmp
danstrstr
adalah fungsi kueri berguna C lainnya.Jawaban:
Anda bisa menggunakan
strcmp
:20
adalah nomor baris,x
bisa berupa nama file apa saja dany
bisa berupa variabel apa saja.sumber
No symbol "strcmp" in current context.
run
untuk itu sehingga pustaka dinamis dimuat. Untuk sumber, cari dan temukan: stackoverflow.com/questions/10000335/... :-)$_streq
metode dari @tlwhitec lebih baik.Pada beberapa implementasi, gdb mungkin tidak tahu tipe kembalinya strcmp. Itu berarti Anda harus memilih, jika tidak maka akan selalu dinilai benar!
sumber
Karena GDB 7.5 Anda dapat menggunakan Fungsi Praktis asli ini :
Tampaknya kurang bermasalah daripada harus mengeksekusi "asing"
strcmp()
pada tumpukan proses 'setiap kali breakpoint terkena. Ini terutama benar untuk debugging proses multithreaded.Untuk kasus demo Anda, penggunaannya akan
atau, jika breakpoint Anda sudah ada dan Anda hanya ingin menambahkan kondisinya
$_streq
hanya cocok dengan seluruh string, jadi jika Anda ingin sesuatu yang lebih licik Anda harus menggunakan$_regex
, yang mendukung sintaks ekspresi reguler Python .sumber