gpt4 book ai didi

c++ - 有什么好处以及为什么 gdb 不同于 MethodName AND MethodName::

转载 作者:行者123 更新时间:2023-11-28 03:26:31 26 4
gpt4 key购买 nike

当做 时,那个让我感到惊讶。对于断点的自动完成,它出现了相同方法的两个选项。

test::TestFoo::SendFoo(short)
test::TestFoo::SendFoo(short)::fooID

在 cpp 上:

bool TestFoo::SendFoo( short x )
{
...
static unsigned int fooID = 0;

为什么 gdb 不同?使用一个或另一个有什么好处?

问题标记为 C++,以避免对 C static 的任何误解。

gdb --version
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-56.el6)
...

最佳答案

SendFoo::fooIDSendFoo 是两种不同的符号,我可以想象 gdb 为您提供的两个断点会有所不同 - 虽然我是不是很熟悉:

定义/初始化fooID 的行在整个程序中只会命中一次,因此该行的断点也应该只命中一次。每次调用函数时都应命中函数级断点,因此存在重大差异。

据我所知,函数作用域 static 对于 C 和 C++ 来说是相同的 - 一个在该函数的所有调用之间共享并在函数第一次被调用时初始化的变量。

关于c++ - 有什么好处以及为什么 gdb 不同于 MethodName AND MethodName::<static var>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13763683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com