Просто пытаюсь что-то отладить и:
(gdb)
Thread 1 "SciTE" hit Breakpoint 2, PropSetFile::Set (this=this@entry=0x7fffffffbea0,
key="LS_COLORS",
val="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.a"...) at ./../src/PropSetFile.cxx:91
91 void PropSetFile::Set(std::string_view key, std::string_view val) {
(gdb) p key
$2 = "LS_COLORS"
(gdb) ptype key
type = std::string_view
Хорошо, поэтому, если я просто скажу p key
, тогда я напечатаю его содержимое.
Но я хочу сделать dprintf
, что означает printf
:
(gdb) printf "'%s'\n", key
'Value can't be converted to integer.
(gdb) printf "'%s'\n", key.c_str()
Can't take address of "key" which isn't an lvalue.
(gdb) printf "'%s'\n", *(char **)key
Invalid cast.
(gdb) printf "'%s'\n", (char *)key
Invalid cast.
(gdb) printf "'%s'\n", std::string(key).c_str()
Cannot look up value of a typedef `std::__cxx11::string'.
Итак, как мне распечатать эту переменную в команде gdb
printf
/ dprintf
?