ptc中断点

ptc中断点,c,debugging,ptrace,C,Debugging,Ptrace,我一直在使用教程尝试在C中设置调试器。我设置了一个测试程序,如下所示: #include<stdio.h> int main() { printf("BEFORE"); printf("AFTER"); } 此外,这是我附加测试程序的代码: char* args[] = {"test", NULL}; if(pid == 0) { ptrace(PTRACE_TRACEME, 0, NULL, NULL); execve("./test", a

我一直在使用教程尝试在C中设置调试器。我设置了一个测试程序,如下所示:

#include<stdio.h>

int main()
{
    printf("BEFORE");

    printf("AFTER"); 
}
此外,这是我附加测试程序的代码:

char* args[] = {"test", NULL};
if(pid == 0)
{
    ptrace(PTRACE_TRACEME, 0, NULL, NULL);
    execve("./test", args, NULL);
    //execl("./test", "test", NULL);
}

您有一个独立于位置的可执行文件。因此,ASLR使其从内存中的随机地址开始。在
ptrace
过程中检查
rip
寄存器,并从那里转储代码,而不是从可执行文件中的地址转储代码。

如果我理解正确,我已经做了类似的操作,结果也类似。我在这里问了一个问题:
char* args[] = {"test", NULL};
if(pid == 0)
{
    ptrace(PTRACE_TRACEME, 0, NULL, NULL);
    execve("./test", args, NULL);
    //execl("./test", "test", NULL);
}