如何在Eclipse Debugger中更改C ++字符串值?

时间:2019-01-17 17:06:44

标签: c++ string eclipse debugging

在Eclipse中调试C ++程序时,我需要更改字符串的值。但是,当我要执行此操作时,我看到了,无法更改它: (这是图片的链接,我的信誉还不够)https://i.imgur.com/5YF1L2F.png

我应该尝试什么?谢谢。

1 个答案:

答案 0 :(得分:0)

std::string在幕后实际上并不是很简单。它必须管理存储文本的内存缓冲区。如果您希望字符串具有不同的值(可能更长),则std::string可能必须取消分配旧缓冲区,分配新缓冲区具有足够的大小,最后复制值,同时跟踪所有相关信息(例如,旧大小和新大小)。

然后还有small string optimization

调试器进行这些更改(在不破坏所讨论的std::string的情况下,这并非易事)。一些精通底层编译器的调试器(例如,如果您在Visual Studio中工作)也许可以做到这一点,但这对调试器来说并非易事。

因此,如果Eclipse的调试器不允许在运行时更改字符串值,我不会感到惊讶。您也许可以更改单个字符,但是特别是添加字符(或替换为更长的字符串)可能超出了它的功能。

免责声明:当然,可能有一种方法或解决方法,例如gdb的this one。我不使用Eclipse,所以我不能告诉你,但是如果没有办法做,那么以上基本上就是这样做的原因。