gdb printf的奇怪行为
我对9.1版中的gdbgdb printf的奇怪行为,gdb,Gdb,我对9.1版中的gdbprintf有问题 echo -e '#include<stdio.h> \n int main(){ \n printf("Hello"); \n }' > test.c gcc -g test.c -o test echo 'break test.c:4' > test.gdb echo 'run' >> test.gdb echo 'set $aux = (char*)malloc(256)' >>
printf
有问题
echo -e '#include<stdio.h> \n int main(){ \n printf("Hello"); \n }' > test.c
gcc -g test.c -o test
echo 'break test.c:4' > test.gdb
echo 'run' >> test.gdb
echo 'set $aux = (char*)malloc(256)' >> test.gdb
echo 'set $e = strcpy($aux, "abc")' >> test.gdb
echo 'printf "%s", $aux' >> test.gdb
gdb --batch --command=test.gdb test
预期输出(与gdb v8相同):
我已经检查了字符集
,但似乎还可以。
有什么想法吗?这是GDB9.2中固定的
如果您不能升级到GDB9.2,但可以重新编译现有发行版的GDB9.1,那么有两行代码
在gdb 9.1-0ubuntu1附带的Ubuntu 20.04上:
apt build dep gdb
从源代码中拖入构建gdb所需的包/usr/bin/dpkg source
)/etc/apt/sources.list中的deb src
行
apt source gdb
。在一个新的目录中执行此操作将使编译后更容易清理gdb-9.1
并应用到gdb/printcmd.c
/usr/local/bin
,您需要运行这在gdb 9.2中已经修复。谢谢@MarkPlotnick至少这个问题可以作为参考,因为一些Linux发行版的默认gdb包仍然是9.1版
Breakpoint 1 at 0x1167: file test.c, line 4.
Breakpoint 1, main () at test.c:4
4 }
�e���
Breakpoint 1 at 0x1167: file test.c, line 4.
Breakpoint 1, main () at test.c:4
4 }
abc
mkdir build
cd build
../configure
make
make install