如何调试创建 RAW 套接字的程序?

如何调试创建 RAW 套接字的程序?

例如我有这个程序:

int main()
{
  int sockfd = ::socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);

  if ( sockfd == -1 )
    printf("Error\n");
  else
    printf("Success\n");

  return 0;

}

因此,我需要拥有超级用户的权限或使用setcap

$ ./Test 
Error
sudo setcap cap_net_raw+eip ./Test
$ ./Test 
Success

但是,我需要使用 QtCretor 调试我的程序,但即使这样,程序仍然无法运行setcap。我尝试过应用setcapQtCreator,但它不能解决我的问题。

有什么解决办法吗?

相关内容