如何调试分段错误?
基本上是这样的:
我在后台运行我的服务器:./server &
然后我运行我的客户端:./client
当我尝试使用正确的用户名和密码登录服务器时,一切正常,但是当我输入无效的用户名和密码时,会导致分段错误。
如何使编译器/调试器能够输出它实际看到的导致分段核心转储的错误。
我知道 gdb,但我尝试使用 gdb 客户端,但它似乎不起作用。
如何调试分段错误?
基本上是这样的:
我在后台运行我的服务器:./server &
然后我运行我的客户端:./client
当我尝试使用正确的用户名和密码登录服务器时,一切正常,但是当我输入无效的用户名和密码时,会导致分段错误。
如何使编译器/调试器能够输出它实际看到的导致分段核心转储的错误。
我知道 gdb,但我尝试使用 gdb 客户端,但它似乎不起作用。
分段错误的一个好主意是运行程序以valgrind
进行调试。这样,您通常会获得有关导致分段错误的原因的更详细信息。例如,它会告诉您是否正在从未初始化的内存中读取。
如果你使用 g++,首先使用 -g 选项编译你的程序。然后使用
gdb name_of_program core
在您获得的核心转储上运行 gdb(name_of_program
是您刚刚使用 g++ 构建的可执行文件的名称)。此链接对于如何使用 gdb 很有用。
此广告代码注释。仅当您有很多函数调用并且您不知道调用路径时,它才有用。