gpt4 book ai didi

c++ - unsigned char 的 gdb 表示形式——是否不一致?

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

我一直在调试一些数字代码中的段错误(C++,不依赖于任何外部库)。当以优化级别-O0(使用gcc)编译并在gdb中运行时,我已经重现了段错误;我得到的回溯是:

(gdb) backtrace 2
#0 0x000000000040171c in QExpFloorLog_Q_R (q=Cannot access memory at address 0x7fffff7fefec) at GlobalFunctions.hpp:11
#1 0x0000000000401b50 in MinExponentFromTheoremTwo (q=2, k_q=20 '\024', r=1122053) at GlobalFunctions.hpp:90

MinExponentFromTheoremTwo 的签名是:

unsigned char MinExponentFromTheoremTwo(const unsigned int q, const unsigned char k_q, const unsigned int r);

所以,我的问题是:我要如何处理 k_q=20 '\024'?我知道 k_q 是一个无符号字符,因此 gdb 给了我一个数值和一个 ascii 表示;我还有其他地方的 unsigned char 变量列为 var1=0 '\000'var2=1 '\001' 等。但是 k_q 似乎不匹配,有一个值20 和代码\024。我是否误解了 unsigned char 的使用方式,或者这是否可以帮助我找到代码中的错误?

顺便说一句,我有

$ uname -a
Linux clayton-AOD255E 2.6.38-13-generic #53-Ubuntu SMP Mon Nov 28 19:33:45 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
$ g++ --version
g++ (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
$ gdb --version
GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2

感谢所有帮助!

最佳答案

称为二十的数字以 10 为基数表示为“20”。在基数 8 中,它是“24”。 \024 是该值的八进制表示。

以下都是相同的值:

20     // decimal, base-10
024 // octal, base-8
'\024' // octal, base-8
0x14 // hex, base-16

关于c++ - unsigned char 的 gdb 表示形式——是否不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9509696/

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