GNU/Linux >> Belajar Linux >  >> Linux

Breakpoint bersyarat GDB pada tipe arbitrer seperti persamaan C++ std::string

Apakah ada cara saya dapat menyetel breakpoint bersyarat pada tipe non-primitif?

Ya, salah satu cara untuk melakukannya adalah dengan mengubah tipe non-primitif menjadi tipe primitif, dalam kasus Anda menjadi char* , dan gunakan strcmp untuk membandingkan string.

condition 1 strcmp(myObject->myStringVar.c_str(),"foo") == 0

Jawaban atas pertanyaan Anda yang Anda tanyakan adalah ya ... dalam kasus umum ini berfungsi untuk kelas dan fungsi arbitrer, dan fungsi anggota kelas. Anda tidak terjebak dengan pengujian tipe primitif. Kelebihan anggota kelas, seperti operator== , harus bekerja.

Tapi saya kira masalah dengan kasus ini ada hubungannya dengan operator== untuk std::string menjadi kelebihan operator bertemplate global :

http://www.cplusplus.com/reference/string/operators/

Jadi deklarasinya seperti:

template<class charT, class traits, class Allocator>
    bool operator==(const basic_string<charT,traits,Allocator>& rhs,
                const charT* lhs );

Saya tidak akan terkejut jika gdb tidak tahu cara menghubungkan titik-titik itu untuk Anda.

Perhatikan bahwa selain apa yang dikatakan @ks1322, Anda dapat tetap berada di ranah C++ dan lebih mudah menggunakan std::string::compare():

condition 1 myObject->myStringVar.compare("foo") == 0

Linux
  1. 7 Contoh Operator Awk yang Kuat (Unary, Binary, Arithmetic, String, Assignment, Conditional, Reg-Ex Awk Operators)

  2. Contoh Breakpoint GDB untuk C – Setel, Lihat, Lanjutkan, dan Hapus Breakpoints

  3. Apakah ada C++ gdb GUI untuk Linux?

  1. Tetapkan breakpoint dalam kode C atau C++ secara terprogram untuk gdb di Linux

  2. Kesalahan segmentasi SIGSEGV yang aneh dalam metode std::string::assign() dari libstdc++.so.6

  3. Cara mencetak anggota objek c++ menggunakan GDB dari alamat jika tipe kelas objek seperti A::B

  1. linux bash, string case unta untuk dipisahkan dengan tanda hubung

  2. Hapus semua karakter khusus dan huruf besar-kecil dari string di bash

  3. C++ Dapatkan string dari Clipboard di Linux