【发布时间】:2019-06-11 22:47:38
【问题描述】:
在 Eclipse 中调试 C++ 程序时,我需要更改字符串的值。但是当我即将这样做时,我看到了这一点,我无法改变它: (这是图片的链接,我还没有足够的声望)https://i.imgur.com/5YF1L2F.png
我应该尝试什么?谢谢。
【问题讨论】:
标签: c++ string eclipse debugging
在 Eclipse 中调试 C++ 程序时,我需要更改字符串的值。但是当我即将这样做时,我看到了这一点,我无法改变它: (这是图片的链接,我还没有足够的声望)https://i.imgur.com/5YF1L2F.png
我应该尝试什么?谢谢。
【问题讨论】:
标签: c++ string eclipse debugging
std::string 在幕后其实并不简单。它必须管理存储文本的内存缓冲区。如果您希望字符串具有不同(可能更长)的值,则 std::string 可能必须释放旧缓冲区,分配足够的新缓冲区大小,最后复制这些值,同时跟踪所有相关信息(例如它的旧大小和新大小)。
调试器进行这些更改并非易事(不会破坏有问题的std::string)。一些对底层编译器非常了解的调试器(例如,如果您在 Visual Studio 中工作)可能能够做到这一点,但对于调试器来说,这并不是一件简单的事情。
因此,如果 Eclipse 的调试器不允许在运行时更改字符串值,我不会感到惊讶。您也许可以更改单个字符,但尤其是添加字符(或用更长的字符串替换)可能超出了它的能力。
免责声明:当然有可能有办法或解决方法,例如 gdb 的this one。我不使用Eclipse所以我不能告诉你,但如果没有办法做到这一点,那么上面基本上就是原因。
【讨论】: