Debugging 如何调试需要在Ubuntu上使用GDB打开低端口的应用程序
我有一个应用程序需要打开端口Debugging 如何调试需要在Ubuntu上使用GDB打开低端口的应用程序,debugging,gdb,port,Debugging,Gdb,Port,我有一个应用程序需要打开端口80 根据,我提供了二进制功能来打开低端端口。 我还为gdb本身提供了功能 当我运行二进制文件时,端口被成功打开,但当我使用GDB运行它时,我的错误是errno=13 重要:使用sudo运行应用程序正是我想要避免的事情 我提供了打开低端端口的二进制功能 在调试二进制文件(ptraced)时,内核会忽略其功能。这是一个合理的安全预防措施,因为ptraced二进制文件可以执行任何操作 我还为gdb本身提供了功能 这并没有改变上图 使用sudo运行应用程序正是我想要避免的事
80
根据,我提供了二进制功能来打开低端端口。
我还为gdb
本身提供了功能
当我运行二进制文件时,端口被成功打开,但当我使用GDB运行它时,我的错误是errno=13
重要:使用sudo
运行应用程序正是我想要避免的事情
我提供了打开低端端口的二进制功能
在调试二进制文件(ptraced)时,内核会忽略其功能。这是一个合理的安全预防措施,因为ptrace
d二进制文件可以执行任何操作
我还为gdb本身提供了功能
这并没有改变上图
使用sudo运行应用程序正是我想要避免的事情
您不必使用sudo
运行应用程序,只需使用GDB即可
或者,让应用程序打开8080端口并进行设置。我想提出一种使用
authbind
调试应用程序的替代方法。
在应用程序代码中不能/不应该更改端口号的情况下,这可能会有所帮助
使用本文中的信息,我做了以下(一次性过程):
authbind
/etc/authbind/byport/80
/etc/authbind/byport/80
/etc/authbind/byport/80
authbind--deep/path/to/app
上行:无需更改代码中的端口号。缺点:由于您的应用程序需要通过
authbind
启动,因此您可能需要将调试器附加到进程,而不是直接从您喜爱的IDE进行调试
也不需要使用此方法设置应用程序的功能(setcap
)