我有一些 c 代码来连接字符串。
char str_cat[strlen(str1) + strlen(str2) + 1];
如何检查 gdb 中 str_cat 的大小?现在它报告0:
print sizeof(str_cat)
它确实打印了字符串,但我如何打印它以显示空字符?
让我改写一下,我如何验证 str_cat 的大小合适并且有足够的空间?
字符 str_cat[strlen(str1) + strlen(str2) + 1];
如何检查 gdb 中 str_cat 的大小?现在它报告0:
str_cat
是一个变长数组。显然gdb
不怎么处理变长数组。
这里有一张关于这个问题的公开票:http: //sourceware.org/bugzilla/show_bug.cgi ?id=9663
它提到了一个现有的补丁,但至少我的版本2012
不包括它。7.4
gdb
要解决 GDB 中的错误,请先将大小存储在单独的变量中,或者之后将大小存储在单独的变量中,例如:
int len = strlen(str1) + strlen(str2) + 1;
char str_cat[len];
或者
char str_cat[strlen(str1) + strlen(str2) + 1;
size_t len = sizeof str_cat;
len
然后在 GDB 中打印。