C 二进制启动时出现分段错误
如何调试Linux上启动二进制文件导致的分段错误? 二进制文件没有可用的源代码C 二进制启动时出现分段错误,c,linux,debugging,C,Linux,Debugging,如何调试Linux上启动二进制文件导致的分段错误? 二进制文件没有可用的源代码 如何知道导致seg故障的二进制文件发出的系统调用。是否有任何调试实用程序可能会有所帮助?您的程序是否有帮助?它将打印程序调用的所有系统调用的列表 样本输出 2[main]正确(2064)********************************************** 83 85[main]true(2064)程序名:C:\cygwin\bin\true.exe(windows pid 2064) 44
如何知道导致seg故障的二进制文件发出的系统调用。是否有任何调试实用程序可能会有所帮助?您的程序是否有帮助?它将打印程序调用的所有系统调用的列表 样本输出 2[main]正确(2064)********************************************** 83 85[main]true(2064)程序名:C:\cygwin\bin\true.exe(windows pid 2064) 44 129[main]真实(2064)操作系统版本:Windows NT-6.1 36 165[主要]正确(2064)********************************************** 145 310[主]真(2064)sigprocmask:0=sigprocmask(0,0x6123D468,0x610FBA10) 183 493[main]true 2064开放共享:名称共享。5,n 5,共享0x60FF0000(通缉0x60FF0000),h 0x70,*m 6 27 520[main]true 2064 heap_init:堆基0x20000000,堆顶0x20000000,堆大小0x18000000(402653184) 30550[main]真实2064开放共享:名称foo,n1,共享0x60FE0000(通缉0x60FE0000),h0x68,*m6 18 568[main]true 2064用户_信息::创建:在0x60FE0000处打开“foo”的共享用户 17 585[main]真实2064用户信息::创建:用户共享版本6467403B 36 621[main]true 2064 fhandler_管道::创建:名称\\.\dir\cygwin-c5e39b7a9d22bafb-2064-sigwait,尺寸164,模式管道类型消息 51 672[main]true 2064 fhandler_管道::创建:管道读取句柄0x84 16 688[main]true 2064 fhandler_管道::创建:CreateFile:name\\.\dir\cygwin-c5e39b7a9d22bafb-2064-sigwait 35 723[main]true 2064 fhandler_管道::创建:管道写入句柄0x88 23746[main]真2064 dll\U crt0\U 0:完成dll\U crt0\U 0初始化
扫描您的程序
对您有帮助吗?它将打印程序调用的所有系统调用的列表
样本输出
2[main]正确(2064)**********************************************
83 85[main]true(2064)程序名:C:\cygwin\bin\true.exe(windows pid 2064)
44 129[main]真实(2064)操作系统版本:Windows NT-6.1
36 165[主要]正确(2064)**********************************************
145 310[主]真(2064)sigprocmask:0=sigprocmask(0,0x6123D468,0x610FBA10)
183 493[main]true 2064开放共享:名称共享。5,n 5,共享0x60FF0000(通缉0x60FF0000),h 0x70,*m 6
27 520[main]true 2064 heap_init:堆基0x20000000,堆顶0x20000000,堆大小0x18000000(402653184)
30550[main]真实2064开放共享:名称foo,n1,共享0x60FE0000(通缉0x60FE0000),h0x68,*m6
18 568[main]true 2064用户_信息::创建:在0x60FE0000处打开“foo”的共享用户
17 585[main]真实2064用户信息::创建:用户共享版本6467403B
36 621[main]true 2064 fhandler_管道::创建:名称\\.\dir\cygwin-c5e39b7a9d22bafb-2064-sigwait,尺寸164,模式管道类型消息
51 672[main]true 2064 fhandler_管道::创建:管道读取句柄0x84
16 688[main]true 2064 fhandler_管道::创建:CreateFile:name\\.\dir\cygwin-c5e39b7a9d22bafb-2064-sigwait
35 723[main]true 2064 fhandler_管道::创建:管道写入句柄0x88
23746[main]真2064 dll\U crt0\U 0:完成dll\U crt0\U 0初始化
除了建议之外,您还可以执行以下操作: 运行
ulimit-c unlimited
以启用核心转储,然后运行应用程序
在分段故障点,它应该进行堆芯转储
然后,您可以运行
gdb-your_-app-core
,并在gdb内部运行backtrace
。可能它是用调试符号编译的,因此您实际上可以获得相当多的信息。除了建议的内容外,您还可以执行以下操作:
运行ulimit-c unlimited
以启用核心转储,然后运行应用程序
在分段故障点,它应该进行堆芯转储
然后,您可以运行
gdb-your_-app-core
,并在gdb内部运行backtrace
。可能它是用调试符号编译的,因此您实际上可以获得相当多的信息。您可以尝试使用运行可执行文件,看看它是否报告任何明显的问题您正在运行的实际程序是什么?我不同意关闭此程序的理由。您可以尝试使用运行可执行文件,看看它是否报告任何明显的问题问题你正在运行的实际程序是什么?我不同意关闭此程序的理由。
% strace true
2 2 [main] true (2064) **********************************************
83 85 [main] true (2064) Program name: C:\cygwin\bin\true.exe (windows pid 2064)
44 129 [main] true (2064) OS version: Windows NT-6.1
36 165 [main] true (2064) **********************************************
145 310 [main] true (2064) sigprocmask: 0 = sigprocmask (0, 0x6123D468, 0x610FBA10)
183 493 [main] true 2064 open_shared: name shared.5, n 5, shared 0x60FF0000 (wanted 0x60FF0000), h 0x70, *m 6
27 520 [main] true 2064 heap_init: heap base 0x20000000, heap top 0x20000000, heap size 0x18000000 (402653184)
30 550 [main] true 2064 open_shared: name foo, n 1, shared 0x60FE0000 (wanted 0x60FE0000), h 0x68, *m 6
18 568 [main] true 2064 user_info::create: opening user shared for 'foo' at 0x60FE0000
17 585 [main] true 2064 user_info::create: user shared version 6467403B
36 621 [main] true 2064 fhandler_pipe::create: name \\.\dir\cygwin-c5e39b7a9d22bafb-2064-sigwait, size 164, mode PIPE_TYPE_MESSAGE
51 672 [main] true 2064 fhandler_pipe::create: pipe read handle 0x84
16 688 [main] true 2064 fhandler_pipe::create: CreateFile: name \\.\dir\cygwin-c5e39b7a9d22bafb-2064-sigwait
35 723 [main] true 2064 fhandler_pipe::create: pipe write handle 0x88
23 746 [main] true 2064 dll_crt0_0: finished dll_crt0_0 initialization