【问题标题】:Setting an std::string variable value from gdb?从 gdb 设置 std::string 变量值?
【发布时间】:2011-01-30 22:23:29
【问题描述】:

是否有可能...当调试器在断点处停止时,修改 std::string 变量的值而不诉诸诸如调整当前缓冲区的内存映像之类的技巧?

例如类似“set var mystring="hello world"

?

【问题讨论】:

    标签: c++ gdb stdstring


    【解决方案1】:

    试试这个(测试并为我工作):

    call mystring.assign("hello world")
    

    关键是不是直接修改内存,而是调用对象的函数来改变它的状态。碰巧std::basic_string 有一个名为assign 的成员函数来完成这项工作。

    【讨论】:

    • 太棒了!这不仅正是我所需要的,它阐明了我对 gdb 工作原理的思考。
    • 您可以使用p mystring.operator=("hello world") 显式调用重载运算符,这是执行mystring = "hello world" 的详细方式,即使不存在其他函数重载也应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 2013-01-26
    • 2023-03-09
    相关资源
    最近更新 更多