导航:首页 > 操作系统 > linuxc检测工具

linuxc检测工具

发布时间:2023-02-16 12:11:39

❶ 请教linux C代码规范性检测工具有哪些

由Stanford大学的Dawson Engler副教授等研究开发,该静态分析工具允许用户使用一种称作metal的状态机语言编写自定义的时序规则,从而实现了静态分析工具的可扩展性。MC的实际效果非常优秀,号称在Linux内核中找出来数百个安全漏洞。MC目前已经商业化,属于Coverity Inc.2014年被Synopsys收购。目前学术领域比较认可的静态分析工具,其技术处于领先地位。

❷ 小弟问一下各位前辈,做linux下面的C开发一般用什么IDE和调试工具

Linux系统C语言开发一般不用IDE,因为Linux系统C或者C++语言IDE并不能带来方便,相反还有点繁琐,主要是不够灵活。Linux C编程一般都是在文本编辑器中写代码(具体用哪个文本编辑器完全是个人喜好,专业的文本编辑器往往要比IDE的代码编辑功能要更好更强大),然后在命令行下编译(编译可以用gcc命令、g++命令,也可以编写一个makefile然后用make命令。如果你学会了makefile的编写,比IDE要方便多了,只输入一句make然后按下回车不就和点击编译按钮一样么),调试是用gdb。为什么说IDE不够灵活呢,举个例子,你编写了一个程序需要调用一个共享库,但是你不知道怎么编译(就是不知道该加什么编译参数),你网络一下后,就知道编译的命令了,但是你不知道怎么控制IDE的行为,它能正常编译还好,如果不能正常编译,你就会各种折腾,效率肯定不高。
如果你实在偏爱IDE,Linux上的IDE也不少(这里只列举C/C++的IDE),有codeblocks、eclipse-cdt、codelites。调试工具也有图形界面的,比较好用的有KDbg、Affinic Debugger GUI。

❸ linux c 检查进程是否存在

1、ps 是一个shell里面的命令,用来输出当前进程状态的。想知道详细用法可以在linux命令行中输入: man ps
2、"ABNORMAL",注意这是一个字符串常量,因为在C语言中使用双引号可以定义一个字符串常量。这个字符串可以是程序员自己随便写的,就像"hello word" 一样。"ABNORMAL"表示不正常的意思。

3、ERROR、CONFLICT、NOERROR三个常量,可以使用#define语句进行定义。至于是在哪个头文件中定义很难说。我建议你可以在当前的.c文件开始的地方自己定义一下,例如:
#include <stdio.h>
... /*其他的头文件等等*/

#define ERROR -1
#define CONFLICT 1
#define NOERROR 0

... /*其他的函数*/

int detect_process(char * process_name)
{
FILE *ptr;
char buff[512];
char ps[128];
sprintf(ps,"ps -e | grep -c ' %s</p>",process_name);
strcpy(buff,"ABNORMAL");
if((ptr=popen(ps, "r")) != NULL)
{
while (fgets(buff, 512, ptr) != NULL)
{
if(atoi(buff)>=2)
{
pclose(ptr);
return CONFLICT;
}
}
}
if(strcmp(buff,"ABNORMAL")==0) /*ps command error*/
return ERROR;
pclose(ptr);
return NOERROR;
}

请注意:里面有个popen() pclose()函数,是通过管道创建一个进程,这两个函数必须要有<stdio.h>文件。具体的参数可以参看网络:http://ke..com/view/2445803.htm?fr=aladdin。
atoi()函数能将字符串转换成整型数。参考网络:http://ke..com/view/653935.htm。

4、整个程序的意思是:

(1)使用"ps"命令,将结果保存到ps变量中,注意sprintf的第一个参数是一个char数组。
(2)将"ABNORMAL"字符串保存到buff变量中,buff也是一个char数组。
(3)使用popen()函数创建一个进程,并将这个进程定向到标准输出(也就是显示器上)。
(4)将进程的输入出存到buff变量中,然后将其转化为数字
(5)如果这个数字>=2说明发生了冲突,返回CONFLICT
(6)在循环之后,比较一下,如果buff一直是"ABNORMAL",说明ps 命令出错,返回ERROR
(7)否则返回NOERROR

综上:ERROR、CONFLICT、NOERROR几个变量只是作为函数返回值,告诉函数调用者这次调用的结果而已,所以完全可以自己定义。除非你们公司已经规定了ERROR必须是某个值,不然你是可以自己定义的,只是在以后调用detect_process()函数的时候记得什么返回值对应什么结果就行了。
自己定义就是在.c文件开头使用#define 好了。

❹ 在Linux中运行的C程序出现内存泄漏现象,怎么解决

内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。
可以使用相应的软件测试工具对软件进行检测。
1. ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。
2. Dmalloc-Debug Malloc Library.
3. Electric
Fence-Linux分发版中由Bruce Perens编写的malloc()调试库。
4. Leaky-Linux下检测内存泄漏的程序。
5. LeakTracer-Linux、Solaris和HP-UX下跟踪和分析C++程序中的内存泄漏。
6. MEMWATCH-由Johan
Lindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gcc的precessor来进行。
7. Valgrind-Debugging and profiling Linux programs, aiming at
programs written in C and C++.
8. KCachegrind-A visualization tool for the profiling data
generated by Cachegrind and Calltree.
9. Leak
Monitor-一个Firefox扩展,能找出跟Firefox相关的泄漏类型。
10. IE Leak Detector
(Drip/IE Sieve)-Drip和IE Sieve leak
detectors帮助网页开发员提升动态网页性能通过报告可避免的因为IE局限的内存泄漏。
11. Windows Leaks
Detector-探测任何Win32应用程序中的任何资源泄漏(内存,句柄等),基于Win API调用钩子。
12. SAP Memory
Analyzer-是一款开源的JAVA内存分析软件,可用于辅助查找JAVA程序的内存泄漏,能容易找到大块内存并验证谁在一直占用它,它是基于Eclipse
RCP(Rich Client Platform),可以下载RCP的独立版本或者Eclipse的插件。
13. DTrace-即动态跟踪Dynamic
Tracing,是一款开源软件,能在Unix类似平台运行,用户能够动态检测操作系统内核和用户进程,以更精确地掌握系统的资源使用状况,提高系统性能,减少支持成本,并进行有效的调节。
14. IBM Rational PurifyPlus-帮助开发人员查明C/C++、托管.NET、Java和VB6代码中的性能和可靠性错误。PurifyPlus
将内存错误和泄漏检测、应用程序性能描述、代码覆盖分析等功能组合在一个单一、完整的工具包中。
15. Parasoft Insure++-针对C/C++应用的运行时错误自动检测工具,它能够自动监测C/C++程序,发现其中存在着的内存破坏、内存泄漏、指针错误和I/O等错误。并通过使用一系列独特的技术(SCI技术和变异测试等),彻底的检查和测试我们的代码,精确定位错误的准确位置并给出详细的诊断信息。能作为Microsoft
Visual C++的一个插件运行。
16. Compuware DevPartner for Visual C++ BoundsChecker
Suite-为C++开发者设计的运行错误检测和调试工具软件。作为Microsoft Visual Studio和C++ 6.0的一个插件运行。
17. Electric Software GlowCode-包括内存泄漏检查,code
profiler,函数调用跟踪等功能。给C++和.Net开发者提供完整的错误诊断,和运行时性能分析工具包。
18. Compuware DevPartner Java
Edition-包含Java内存检测,代码覆盖率测试,代码性能测试,线程死锁,分布式应用等几大功能模块。
19. Quest JProbe-分析Java的内存泄漏。
20. ej-technologies JProfiler-一个全功能的Java剖析工具,专用于分析J2SE和J2EE应用程序。它把CPU、执行绪和内存的剖析组合在一个强大的应用中。JProfiler可提供许多IDE整合和应用服务器整合用途。JProfiler直觉式的GUI让你可以找到效能瓶颈、抓出内存泄漏、并解决执行绪的问题。4.3.2注册码:A-G666#76114F-1olm9mv1i5uuly#0126
21. BEA JRockit-用来诊断Java内存泄漏并指出根本原因,专门针对Intel平台并得到优化,能在Intel硬件上获得最高的性能。
22. SciTech Software AB .NET Memory
Profiler-找到内存泄漏并优化内存使用针对C#,VB.Net,或其它.Net程序。
23. YourKit .NET & Java Profiler-业界领先的Java和.NET程序性能分析工具。
24. AutomatedQA AQTime-AutomatedQA的获奖产品performance profiling和memory
debugging工具集的下一代替换产品,支持Microsoft, Borland, Intel, Compaq 和
GNU编译器。可以为.NET和Windows程序生成全面细致的报告,从而帮助您轻松隔离并排除代码中含有的性能问题和内存/资源泄露问题。支持.Net
1.0,1.1,2.0,3.0和Windows 32/64位应用程序。
25. JavaScript Memory Leak Detector-微软全球产品开发欧洲团队(Global Proct
Development- Europe team, GPDE)
发布的一款调试工具,用来探测JavaScript代码中的内存泄漏,运行为IE系列的一个插件。

❺ linux下有方便地查看C/c++代码的工具吗

据我所知, linux下的工具, 无论是集成开发环境, 还是代码阅读工具都不如windows下的方便,强大。IDE有如下一些: eclipse, CodeLite, NetBeans, KDevelop4, CodeBlocks。阅读工具有:source navigator NG, unstanding等。
推荐不要学习开发, 开发虽收入不错, 但真心没有什么意思, 当成业余爱好还是比较有趣的。

❻ linux下后面检测工具chkrootkit的简单使用

Rootkit是一种具有隐蔽性的功能程序,通过Rootkit,攻击者可以控制被入侵的电脑。利用ChkrootkitL在inux系统下的查找检测Rootkit的工具。

Chkrootkit没有包含在官方的CentOS或Debian源,因此需要采取手动编译的方法来安装。因此还需要在系统中安装好gcc编译包

1.linux安装chkrootkit编译安装

yum -y install gcc

yum -y install gcc-c++

yum -y install make

debian系统运行下面两个命令

apt-get -y install gcc

apt-get -y install make

安装chkrootkit

wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz

解压

tar zxvf chkrootkit.tar.gz

cd chkrootkit-*

make sense编译安装

cd ..

cp -r chkrootkit-* /usr/local/chkrootkit 一般将安装的路径放在/usr

rm -rf chkrootkit-*

/usr/local/chkrootkit/chkrootkit 安装后chkrootkit 的路径

直接执行,查看输入结果

安装RKHunter

wget https://sourceforge.net/projects/rkhunter/files/latest/download/rkhunter-1.46.tar.gz

tar -zxvf rkhunter-1.46.tar.gz 解压

cd rkhunter-1.4.6

./installer.sh --layout default --install 默认安装

/usr/local/bin/rkhunter -c 运行此工具, 需要按回车键继续检测

第一部分是进行系统命令的检查,ok表示正常,warning 表示有异常,Not found 不用理会,

第二部分是检测常见的rootkit程序,

第三部分是一些特殊的附加检测

第四部分是对网络,系统端口,系统启动文件,系统用户,组配置,等等

第五部分是应用程序进行检测

第六部分是对上面输出的一个总结 

❼ linux数组越界漏洞怎么利用

Linux c/c++上常用内存泄露检测工具有valgrind, Rational purify。Valgrind免费。Valgrind可以在 32位或64位 PowerPC/Linux内核上工作。
Valgrind工具包包含多个工具,如Memcheck,Cachegrind,Helgrind, Callgrind,Massif。下面分别介绍个工具的作用:
Memcheck 工具主要检查下面的程序错误:
• 使用未初始化的内存 (Use of uninitialised memory)
• 使用已经释放了的内存 (Reading/writing memory after it has been free’d)
• 使用超过 malloc分配的内存空间(Reading/writing off the end of malloc’d blocks)
• 对堆栈的非法访问 (Reading/writing inappropriate areas on the stack)
• 申请的空间是否有释放 (Memory leaks – where pointers to malloc’d blocks are lost forever)
• malloc/free/new/delete申请和释放内存的匹配(Mismatched use of malloc/new/new [] vs free/delete/delete [])
• src和dst的重叠(Overlapping src and dst pointers in memcpy() and related functions)
Valgrind不检查静态分配数组的使用情况。
Valgrind占用了更多的内存--可达两倍于你程序的正常使用量。如果你用Valgrind来检测使用大量内存的程序就会遇到问题,它可能会用很长的时间来运行测试
2.1. 下载安装
http://www.valgrind.org
安装
./configure;make;make install
2.2. 编译程序
被检测程序加入–g -fno-inline 编译选项保留调试信息。

2.3. 内存泄露检测
$ valgrind --tool=memcheck --log-file=/root/valgrind_log_all --leak-check=full --error-limit=no --show-reachable=yes --trace-children=yes /usr/local/sdata/sbin/rpcbakupsvr
其中--leak-check=full 指的是完全检查内存泄漏,--show-reachable=yes是显示内存泄漏的地点,--trace-children=yes是跟入子进程。当程序正常退出的时候valgrind自然会输出内存泄漏的信息。
1.内存泄露:
#include <stdio.h>void function()
{ int *p = (int*)malloc(10*sizeof(int)); p[10] = 0;
}int main()
{ function(); return 0;
}

相关日志:
==20220== Memcheck, a memory error detector
==20220== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==20220== Using Valgrind-3.6.1-Debian and LibVEX; rerun with -h for right info
==20220== Command: ./test
==20220== Parent PID: 20160
==20220==
==20220== Invalid write of size 4
==20220== at 0x80483FF: function (in /mnt/Documents/Training/valgrind/test)
==20220== by 0x8048411: main (in /mnt/Documents/Training/valgrind/test)
==20220== Address 0x41be050 is 0 bytes after a block of size 40 alloc'd
==20220== at 0x4028876: malloc (vg_replace_malloc.c:236)
==20220== by 0x80483F5: function (in /mnt/Documents/Training/valgrind/test)
==20220== by 0x8048411: main (in /mnt/Documents/Training/valgrind/test)
==20220==
==20220==
==20220== HEAP SUMMARY:
==20220== in use at exit: 40 bytes in 1 blocks
==20220== total heap usage: 1 allocs, 0 frees, 40 bytes allocated
==20220==
==20220== LEAK SUMMARY:
==20220== definitely lost: 40 bytes in 1 blocks
==20220== indirectly lost: 0 bytes in 0 blocks
==20220== possibly lost: 0 bytes in 0 blocks
==20220== still reachable: 0 bytes in 0 blocks
==20220== suppressed: 0 bytes in 0 blocks
==20220== Rerun with --leak-check=full to see details of leaked memory
==20220==
==20220== For counts of detected and suppressed errors, rerun with: -v
==20220== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 11 from 6)
2.使用未初始化的内存
#include <stdio.h>int main()
{ int a; if (a==1)
{ printf("a==%d\n",a);
} return 0;
}

日志分析:
==20345== Memcheck, a memory error detector
==20345== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==20345== Using Valgrind-3.6.1-Debian and LibVEX; rerun with -h for right info
==20345== Command: ./test
==20345==
==20345== Conditional jump or move depends on uninitialised value(s)
==20345== at 0x80483F2: main (in /mnt/Documents/Training/valgrind/test)
==20345==
==20345==
==20345== HEAP SUMMARY:
==20345== in use at exit: 0 bytes in 0 blocks
==20345== total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==20345==
==20345== All heap blocks were freed -- no leaks are possible
==20345==
==20345== For counts of detected and suppressed errors, rerun with: -v
==20345== Use --track-origins=yes to see where uninitialised values come from
==20345== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 11 from 6)
可以使用--track-origins=yes 得到更多的信息
3.内存读写越界
#include <stdio.h>int main()
{ int *a = (int*)malloc(5*sizeof(int)); a[5] = 1; return 0;
}

==20368== Memcheck, a memory error detector
==20368== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==20368== Using Valgrind-3.6.1-Debian and LibVEX; rerun with -h for right info
==20368== Command: ./test
==20368==
==20368== Invalid write of size 4
==20368== at 0x8048404: main (in /mnt/Documents/Training/valgrind/test)
==20368== Address 0x41be03c is 0 bytes after a block of size 20 alloc'd
==20368== at 0x4028876: malloc (vg_replace_malloc.c:236)
==20368== by 0x80483F8: main (in /mnt/Documents/Training/valgrind/test)
==20368==
==20368==
==20368== HEAP SUMMARY:
==20368== in use at exit: 20 bytes in 1 blocks
==20368== total heap usage: 1 allocs, 0 frees, 20 bytes allocated
==20368==
==20368== LEAK SUMMARY:
==20368== definitely lost: 20 bytes in 1 blocks
==20368== indirectly lost: 0 bytes in 0 blocks
==20368== possibly lost: 0 bytes in 0 blocks
==20368== still reachable: 0 bytes in 0 blocks
==20368== suppressed: 0 bytes in 0 blocks
==20368== Rerun with --leak-check=full to see details of leaked memory
==20368==
==20368== For counts of detected and suppressed errors, rerun with: -v
==20368== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 11 from 6)
4.内存申请释放管理错误
#include <stdio.h>int main()
{ int *a = new int[5]; /*free(a);*/ delete a; return 0;
}

❽ windows用什么工具查看linuxc工程代码

熟悉命令行的话vim 是比较好的选择
喜欢IDE的话sublimetext,atom, 都可以,微软出的visual studio code 也是不错的选择

阅读全文

与linuxc检测工具相关的资料

热点内容
有pdf却打不开 浏览:460
七星彩软件app怎么下载 浏览:217
32单片机的重映射哪里改 浏览:816
为什么前端不用刷算法题 浏览:708
对称加密系统和公钥加密系统 浏览:428
历史地理pdf 浏览:606
物联网云服务器框架 浏览:648
sybaseisql命令 浏览:183
android权威编程指南pdf 浏览:663
哪些软件属于加密软件 浏览:646
文件夹75丝什么意思 浏览:470
最便宜sop8单片机 浏览:966
图解周易预测学pdf 浏览:420
c盘莫名奇妙多了几个文件夹 浏览:171
贵州花溪门票优惠app哪个好 浏览:803
如何说话不会让人有被命令的感觉 浏览:440
哪里可下载湘工惠app 浏览:265
福特python 浏览:312
pdf转换成word表格 浏览:353
无线远端服务器无响应是什么意思 浏览:672