Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.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_Valgrind - Fatal编程技术网

C 需要翻译协助

C 需要翻译协助,c,valgrind,C,Valgrind,我对C编程比较陌生,有人要求我检查linux实用程序是否存在缓冲区溢出,但是我对该领域的知识有限,所以如果我在这方面做得不好,请原谅。我使用Valgrind检测溢流,在其中我收到了一个明确的泄漏,因此我应用了--泄漏检查完整来确定泄漏可能来自何处,但我不确定如何继续,有人能帮我吗 我选择的实用程序是nstat。以下是我的结果: valgrind --leak-check=full nstat -d 1111111111

我对C编程比较陌生,有人要求我检查linux实用程序是否存在缓冲区溢出,但是我对该领域的知识有限,所以如果我在这方面做得不好,请原谅。我使用Valgrind检测溢流,在其中我收到了一个明确的泄漏,因此我应用了--泄漏检查完整来确定泄漏可能来自何处,但我不确定如何继续,有人能帮我吗

我选择的实用程序是nstat。以下是我的结果:

  valgrind --leak-check=full nstat -d 1111111111                        
                                               
==3749== Memcheck, a memory error detector                             
==3749== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.      
==3749== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info        
==3749== Command: nstat -d 1111111111        
==3749==                        
#kernel                        
IpInReceives                    112                0.0   
IpInDelivers                    112                0.0     
IpOutRequests                   115                0.0    
TcpActiveOpens                  6                  0.0     
TcpInSegs                       30                 0.0    
TcpOutSegs                      32                 0.0    
TcpRetransSegs                  1                  0.0    
UdpInDatagrams                  82                 0.0    
UdpOutDatagrams                 82                 0.0      
Ip6InReceives                   2                  0.0      
Ip6InDelivers                   2                  0.0     
Ip6OutRequests                  2                  0.0      
Ip6OutNoRoutes                  2                  0.0      
Ip6InMcastPkts                  2                  0.0       
Ip6OutMcastPkts                 2                  0.0      
Ip6InOctets                     186                0.0      
Ip6OutOctets                    186                0.0       
Ip6InMcastOctets                186                0.0       
Ip6OutMcastOctets               186                0.0       
Ip6InNoECTPkts                  2                  0.0        
Udp6InDatagrams                 2                  0.0        
Udp6OutDatagrams                2                  0.0        
TcpExtTW                        2                  0.0        
TcpExtTCPHPHits                 6                  0.0         
TcpExtTCPPureAcks               5                  0.0        
TcpExtTCPHPAcks                 6                  0.0      
TcpExtTCPTimeouts               1                  0.0      
TcpExtTCPSynRetrans             1                  0.0     
TcpExtTCPOrigDataSent           12                 0.0     
TcpExtTCPDelivered              18                 0.0     
IpExtInMcastPkts                4                  0.0     
IpExtOutMcastPkts               4                  0.0      
IpExtInOctets                   10138              0.0      
IpExtOutOctets                  9060               0.0      
IpExtInMcastOctets              292                0.0       
IpExtOutMcastOctets             292                0.0        
IpExtInNoECTPkts                112                0.0       
==3749==      
==3749== HEAP SUMMARY:     
==3749==     in use at exit: 18,429 bytes in 725 blocks      
==3749==   total heap usage: 756 allocs, 31 frees, 34,350 bytes allocated     
==3749==       
==3749== 128 bytes in 1 blocks are definitely lost in loss record 1 of 9        
==3749==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)       
==3749==    by 0x10C79D: ??? (in /usr/bin/nstat)          
==3749==    by 0x4BE00B2: (below main) (libc-start.c:308)           
==3749==              
==3749== LEAK SUMMARY:             
==3749==    definitely lost: 128 bytes in 1 blocks         
==3749==    indirectly lost: 0 bytes in 0 blocks            
==3749==      possibly lost: 0 bytes in 0 blocks           
==3749==    still reachable: 18,301 bytes in 724 blocks            
==3749==         suppressed: 0 bytes in 0 blocks          
==3749== Reachable blocks (those to which a pointer was found) are not shown.      
==3749== To see them, rerun with: --leak-check=full --show-leak-kinds=all      
==3749==                       
==3749== For lists of detected and suppressed errors, rerun with: -s          
==3749== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)  

我在Valgrind手册上搜索了类似的输出结果,但没有找到任何结果。如果有人能告诉我可以做些什么来继续我的分析,那就太好了。

如果您正在检查缓冲区溢出,那么请放心,泄漏不属于这一类。然而,你的工作还远远没有完成。有两个主要的项目需要考虑。

首先是代码覆盖率。仅仅一次测试可能远远不够。理想情况下,您应该有一个完整的测试套件,该套件还具有测试覆盖率的度量

第二个问题是,哪一个是最好的工具。Valgrind memcheck不做的事情之一是检查静态分配和全局变量的溢出。将检查动态分配的内存(使用malloc或new)


为了检查静态分配和全局变量,我建议您使用地址消毒器。但是,这将需要重建nstat,如果您正在检查缓冲区溢出,那么请放心,泄漏不属于该类别。然而,你的工作还远远没有完成。有两个主要的项目需要考虑。

首先是代码覆盖率。仅仅一次测试可能远远不够。理想情况下,您应该有一个完整的测试套件,该套件还具有测试覆盖率的度量

第二个问题是,哪一个是最好的工具。Valgrind memcheck不做的事情之一是检查静态分配和全局变量的溢出。将检查动态分配的内存(使用malloc或new)


为了检查静态分配和全局变量,我建议您使用地址消毒器。但是,这需要重建
nstat

您好,欢迎来到StackOverflow!你介意在回答中键入valgrind输出而不是链接到图像吗?另外,你只包含valgrind输出的结尾。您能显示整个输出吗?只是为了澄清一下,不要键入valgrind输出,而是复制并粘贴它。您必须编译一个版本的
nstat
,其中包含调试信息,以便能够获得任何真正有用的
valgrind
输出。@Shawn我不知道如何操作,你有什么办法可以给我一些指导吗?你好,欢迎来到StackOverflow!你介意在回答中键入valgrind输出而不是链接到图像吗?另外,你只包含valgrind输出的结尾。您可以显示整个输出吗?只是为了澄清一下,不要键入valgrind输出,而是复制并粘贴它。您必须编译一个版本的
nstat
,其中包含调试信息,才能获得任何真正有用的
valgrind
输出。@Shawn我不确定如何操作,您能给我一些指导吗?