2

我有一些 c 代码来连接字符串。

char str_cat[strlen(str1) + strlen(str2) + 1];

如何检查 gdb 中 str_cat 的大小?现在它报告0:

print sizeof(str_cat)

它确实打印了字符串,但我如何打印它以显示空字符?

让我改写一下,我如何验证 str_cat 的大小合适并且有足够的空间?

4

2 回答 2

4

字符 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.4gdb

于 2013-01-01T23:01:05.510 回答
0

要解决 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 中打印。

于 2013-01-02T03:24:25.070 回答