我在一个巨大的代码中有这个C函数:
void test() {
char *arg[] = {"/bin/sh", 0};
execve("/bin/sh", arg, 0);
}
我正在尝试使用gdb调试此代码
(gdb) call test() process 1948 is executing new program: /bin/dash warning: Selected architecture i386:x86-64 is not compatible with reported target architecture i386 Architecture of file not recognized. An error occurred while in a function called from GDB. Evaluation of the expression containing the function (test) will be abandoned. When the function is done executing, GDB will silently stop.
因此shell不会产卵。怎么去呢?
答案 0 :(得分:3)
gdb不允许您使用不同的体系结构执行二进制文件,即使它在您的平台上兼容。如果您尝试从64位执行程序执行32位可执行文件,则会发生同样的情况。这也发生在gdb的最新版本(7.5.1)上。
如果您可以将代码编译为32位而不会导致其他问题,那么这将是一种解决方法。
根据Hasturkun的评论,有一个补丁here。