如何在 Ubuntu 上使用 GDB 调试需要打开低端口的应用程序



我有一个应用程序需要打开端口80

据此,我提供了打开低端口的二进制功能。 我也赋予了gdb本身的能力。

当我运行二进制文件时,端口已成功打开,但是当我使用 GDB 运行时,errno = 13时出错。

重要提示:使用sudo运行应用程序正是我想要避免的事情

我提供了打开低端口的二进制功能。

调试(跟踪(二进制文件时,内核会忽略其功能。这是一个合理的安全预防措施,因为可以使ptraced二进制文件执行任何操作

我也为 gdb 本身提供了功能。

这不会改变上面的图片。

使用 sudo 运行应用程序正是我想要避免的事情

您不必使用sudo运行应用程序,只需使用 GDB。

或者,让应用程序打开端口 8080,并设置端口转发。

我想提出一种使用authbind调试应用程序的替代方法。 这在应用程序代码中无法/不应更改端口号的情况下可能会有所帮助。

使用本文中的信息,我执行以下操作(一次性过程(:

  1. 如果需要,请安装authbind
  2. 须藤触摸/etc/authbind/byport/80
  3. 须藤CHMOD 500/etc/authbind/byport/80
  4. 须藤笃用户ID用户标识/etc/authbind/byport/80

(其中"userid"读取启动用户,很可能是您自己的用户(

从那里开始使用以下方法启动您的应用程序:
authbind --deep /path/to/app

优点:无需更改代码中的端口号。
缺点:由于应用需要由authbind启动,因此可能需要将调试器附加到进程,而不是直接从自己喜欢的 IDE 进行调试。

无需使用此方法设置应用程序的功能(setcap(。

最新更新