【问题标题】:setting strings in gdb在 gdb 中设置字符串
【发布时间】:2009-11-23 00:18:54
【问题描述】:

c++:

int main() 
    { 
    string a = "a"; 
    ... ... 
    }

当我在 gdb 中调试时:

(gdb) 设置 var a = "ok"
无效的演员表

我运行程序并在字符串 a 初始化后在断点处暂停。我正在尝试设置它的值,但它抱怨无效的演员表。什么是正确的语法?

【问题讨论】:

  • “设置”一个字符串是一个复杂的操作,gdb不一定支持。
  • 好的...所以您可以使用 gdb 设置 int 变量,但不能设置字符串?我很困惑,因为设置字符串似乎并不比设置整数复杂得多,而且我知道这是可行的: int main() { int b = 9; } (gdb) set var b = 8 // 不抱怨“设置”是我正在尝试做的正确术语,对吧?
  • “设置字符串似乎并不比设置 int 复杂” - 确实如此。

标签: c++ variables string gdb setting


【解决方案1】:

你可以这样做:

call a.assign("ok")

这样,gdb 马上就知道它需要调用一个函数(而不是你尝试使用operator= 的那个),它知道要调用什么函数(std::string::assign),它不需要转换类型完全没有(因为assign 的重载完全匹配)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    相关资源
    最近更新 更多