Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 二进制启动时出现分段错误_C_Linux_Debugging - Fatal编程技术网

C 二进制启动时出现分段错误

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

如何调试Linux上启动二进制文件导致的分段错误? 二进制文件没有可用的源代码


如何知道导致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