c++ - this 和 this@entry 的区别?

标签 c++ eclipse gdb eclipse-cdt

我最近开始使用 Eclipse-CDT,并对调试透视图中变量窗口中的“this”和“this@entry”感到好奇。它们都具有相同的内存地址并且看起来相同,但为什么要包含两者呢? 'this@entry' 是否意味着在函数内的某个断点处表示 'this' 的状态? 'this@entry' 下表示的值是否超出范围,可以这么说,并在函数返回时更新 'this'?

They both have the same memory address but...

team1,2 和 currentMatch 是我正在调试的类的全局变量,断点在该类的成员函数中。

最佳答案

@entry形式是指函数进入时参数的值。这并不总是可用,但有时是可用的——它有一个 DWARF 扩展,并且 GCC 在可能的情况下发出它。

这里有一些信息:

https://sourceware.org/gdb/onlinedocs/gdb/Variables.html

IIRC 在 gdb 的 CLI 中,我们决定采用一种格式,当它与当前值不同时,仅在回溯中显示“@entry”。但是 MI(Eclipse 使用的)与您所说的不同,它似乎总是显示它。

关于c++ - this 和 this@entry 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19386073/

相关文章:

c++ - 跳过元素缓冲区中的索引

eclipse - 尝试从WSDL文件生成时出现Maven问题

java - 需要一个用 Java 编写的 Java 和 Javascript diff 工具

python - 如何从 PythonGDB (GDB 7.1) 中的 gdb.execute 获取输出?

c++ - vector 中的段错误

c++ - ESRI map 对象 - 是否可以禁用 MouseWheel 事件处理程序?

c++ - 我对 N4140 中 [basic.link]/7 的理解是否正确?

java - 使 OcaIDE 在 Mac 上的 Eclipse 中工作

gdb(GNU 调试器)的 Java API

python - 单步执行时应用GDB FrameDecorator