C 无法通过IDA在gdbserver中设置断点

C 无法通过IDA在gdbserver中设置断点,c,linux,gcc,reverse-engineering,ida,C,Linux,Gcc,Reverse Engineering,Ida,我正在使用一台Ubuntu14.04机器进行二进制攻击练习(学习如何使用缓冲区溢出、编写外壳代码等)。 到目前为止,我已经能够通过gdbserver运行这些程序,这些程序专门用C编写,并用gcc编译,然后通过IDAPRO 6.8远程连接到它 然而,现在我正在尝试运行一个程序,它没有达到IDA中设置的断点。两者之间显然存在通信,我可以通过IDA执行程序,但它不会在我设置的任何断点处停止,包括程序执行流中肯定会被击中的断点。我在地址上设置了断点,所以不可用的调试信息不是原因。 而且,当我用gdb调试

我正在使用一台Ubuntu14.04机器进行二进制攻击练习(学习如何使用缓冲区溢出、编写外壳代码等)。 到目前为止,我已经能够通过gdbserver运行这些程序,这些程序专门用C编写,并用gcc编译,然后通过IDAPRO 6.8远程连接到它

然而,现在我正在尝试运行一个程序,它没有达到IDA中设置的断点。两者之间显然存在通信,我可以通过IDA执行程序,但它不会在我设置的任何断点处停止,包括程序执行流中肯定会被击中的断点。我在地址上设置了断点,所以不可用的调试信息不是原因。 而且,当我用gdb调试它时,它工作得非常好。 我以为这是因为我打开了ASLR,但当我将其关闭时,它仍然不起作用。原因可能是什么

程序是这样编译的(仅一个文件):


gcc-pie-fPIE-fno stack protector-o prog prog.c

为了使断点在行或(未导出)函数上工作,程序需要具有调试符号。您的
gcc
命令行不包括这些。在这种情况下,如果要在内存地址上创建一个断点,该断点将起作用;但它不适用于行,也不适用于导出的函数,因为调试器(或
gdbserver
stub)的必要信息不可用


要修复此问题,请将
-g
参数添加到您的
gcc
命令行。

或-ggdb,它应该专门为gdb生成调试信息。我在内存地址上设置了断点,以前在未使用-g标志编译的程序上使用此参数。请参见编辑plz。