测试工具大全,这里应该有你想要的。
压力测试工具集 工具相关网址 LoadRunner http://www.mercuryinteractive.com/products/loadrunner/ SilkPerformer http://www.segue.com/products/load-stress-performance-testing/index.asp QALoad http://www.compuware.com/products/qacenter/qaload.htm WebLoad OpenSTA开源 Jmeter开源 自动测试工具集 工具相关网址 WinRunner http://www.mercuryinteractive.com/products/winrunner/ SilkTest http://www.segue.com/products/functional-regressional-testing/silktest.asp QARun http://www.compuware.com/products/qacenter/qarun.htm SAFS http://safsdev.sourceforge.net/Default.htm Bug追踪系统 工具相关网址 JIRA http://www.atlassian.com/software/jira/ Bugzilla http://www.bugzilla.org TestDirector http://www.mercuryinteractive.com/products/testdirector/ GNATS http://www.gnu.org/software/gnats/ TestTrackPro http://www.seapine.com/ttpro.html 测试设计工具 ALLPAIRS http://satisfice.com/ Caliber-RBT http://www.tbi.com Caliber-RM http://www.tbi.com DARTT http://home.t-online.de/home/bsse.info/ Datatect http://www.datatect.com DGL http://www.csee.usf.edu/~maurer/ McCabe Test http://www.mccabe.com McCabe TestCompress http://www.mccabe.com Multi http://www.testing.com/ Panorama C/C++ http://www.softwareautomation.com Reactis Tester http://www.reactive-systems.com TDGEN http://www.soft.com/Products/index.html T-VEC Test Generation System http://www.t-vec.com GUI测试驱动器 Android http://www.smith-house.org/open.html Atesto Functional Testing Service "http://www.atesto.com/ " AutoTester for Windows http://www.autotester.com AutoTester for OS/2 http://www.autotester.com CAPBAK http://www.soft.com/Products/index.html Certify http://www.worksoft.com/ CitraTest http://www.tevron.com e-Monitor http://www.empirix.com/ e-Tester http://www.empirix.com/ eValid http://www.e-valid.com/ imbus GUI Test Case Library http://www.imbus.de QARunTM http://www.compuware.com/qacenter Panorama-2 "http://www.softwareautomation.com " QC/Replay http://www.centerline.com QES/EZ for GUI http://www.qestest.com Monitor Master http://www.argogroup.com SilkTest http://www.segue.com Smalltalk Test Mentor http://www.silvermark.com Test Now http://www.stlabs.com/ TestQuest Pro Test Automation System http://www.testquest.com TestRunner http://www.qronus.com/ WinRunner Mercury Interactive http://www.merc-int.com xrc - X Remote Control http://www.absol.com/ Xrunner http://www.merc-int.com 负荷和性能工具 ANTS - Advanced .NET Testing System http://www.red-gate.com/ Atesto Automated Load Test http://www.atesto.com/ AutoController http://www.autotester.com AutoController with Virtual DirectTest http://www.autotester.com Benchmark FactoryTM http://www.quest.com Capacity Calibration http://www.capcal.com Chariot? http://www.ganymedesoftware.com CYRANO ServerPack http://www.cyrano.com e-Load http://www.empirix.com/ FORECAST http://www.facilita.co.uk ITF - Internetworking Test Facility http://www.acomtech.com Load http://www.pushtotest.com Load Runner Product Family http://www.merc-int.com Microsoft Web Application Stress Tool (WAS) http://webtool.rte.microsoft.com/ NetPressure http://www.syntheticnets.com PegasusTM http://www.ganymedesoftware.com Portent http://www.loadtesting.com preVue-ASCII http://www.rational.com/products/prevue/ preVue-X http://www.rational.com/products/prevue/ "PureLoad" http://www.minq.se QALoadTM http://www.compuware.com Rational Suite PerformanceStudio http://www.rational.com/products/pstudio/ "Rational SiteLoad" http://www.rational.com/products/siteload/ RemoteCog Product Family http://www.fiveninesolutions.com Scapa StressTest for Citrix MetaFrame. http://www.scapatech.com SilkPerformer http://www.segue.com/ Teleprocessing Network Simulator http://www.networking.ibm.com/tns/tnsprod htm WebLoad 3.0 http://www.radview.com Web Roller http://webapplicationstesting.com Webserver Stress Tool http://www.paessler.com WebSpray http://www.redhillnetworks.com 非GUI测试驱动器 "AdaTEST" http://www.qcsltd.com ANVL http://www.midnight.com/ AutoAdviser http://www.autotester.com AutoTester Client/Server for use with SAP R/3 http://www.autotester.com Cantata http://www.qcsltd.com "CONVEX Integrated Test Environment (CITE)" http://www.cirr.com/ CTA++ http://www.testwell.fi CTB http://www.testwell.fi ITF - Internetworking Test Facility http://www.acomtech.com/ OTF - An Object Testing Framework "http://www.mcgsoft.com/ " QADirector? http://www.compuware.com/qacenter "QCIT" http://www.qistest.com QES/Architect http://www.qestest.com QES/EZ http://www.qestest.com QMTest http://www.codesourcery.com/ SilkPilot http://www.segue.com SMARTS http://www.soft.com/Products/index.html SDTF - SNA Development Test Facility http://www.acomtech.com TALC2000 http://www.talc2000.com TBGEN http://www.testwell.fi TEO http://www.gako.fr Test Manager http://www.launchsoftware.com Test Mentor - Java Edition http://www.javatesting.com Test Library Manager http://www.autotester.com "Test Station" http://www.autotester.com TestWorks http://www.soft.com/Products/index.html VectorCAST http://www.vectors.com VersaTest http://www.softsell.com 测试实现工具 Access for DB2 http://www.princetonsoftech.com/ Aprobe http://www.ocsystems.com Aqtest http://www.automatedqa.com/ BoundsChecker compuware http://www.numega.com/ C++Test http://www.parasoft.com DateWise FileCompare http://www.datewise.com/mt dmalloc http://www.dmalloc.com/ EXDIFF http://www.soft.com/Products/index.html "fakesmtpd" http://www.jera.com/ "FREstimate" http://www.softrel.com/ HeapAgent http://www.microquill.com InCtrl5 http://www.zdnet.com/downloads/stories/info/0,77424,.html JSUnit http://www.edwardh.com/jsunit/ Junit http://www.junit.org/ MDBDiff http://jupiter.drw.net/matpie/PBSystems/products/retired/MDBDiff.h tml Move for DB2 http://www.princetonsoftech.com/ mpatrol http://www.cbmamiga.demon.co.uk/mpatrol/ "ObjectTester" http://www.obsoft.com Inuse http://www.parasoft.com Rational Purify http://www.rational.com/products/purify_unix/index.jtmpl Rational Test RealTime http://www.rational.com SilkRealizer http://www.segue.com WhenToStop http://www.softrel.com/ ZeroFault http://www.tkg.com 测试评估工具 AdaTEST95 http://www.qcsltd.com Aonix Validator/Req http://www.aonix.com/ C-Cover http://www.bullseye.com Cantata++ http://www.qcsltd.com CodeTEST http://www.amc.com CTC++ http://www.testwell.fi GlassJARToolkit http://glassjartoolkit.com/gjtk.html "Hindsight/TCA"http://www.integrisoft.com Hindsight/TPA http://www.integrisoft.com "Insure++"http://www.parasoft.com "Java Test Coverage" http://www.semdesigns.com/Products/TestCoverage/index.html LDRA Testbed http://www.ldra.com "LOGISCOPE toolset" http://www.telelogic.com/ ObjectCoverage http://www.obsoft.com Panorama C/C++ "http://www.softwareautomation.com " Rational PureCoverage http://www.rational.com/products/purecoverage/index. jtmpl "TCMON" http://www.testwell.fi TCA "http://www.parasoft.com " TCAT C/C++ http://www.soft.com/Products/index.html TCAT for Java http://www.soft.com/Products/index.html TCAT-PATH http://www.soft.com/Products/index.html T-SCOPE http://www.soft.com/Products/index.html TestWorks/Coverage http://www.soft.com/Products/index.html 静态分析工具 AccVerify SE for FrontPage http://www.hisoftware.com/msacc/ Aivosto Project Analyzer http://www.aivosto.com/vb.html ASSENT http://www.tcs.com ccount "http://www.cs.umd.edu/users/cml/resources/cmetrics/ " "Cleanscape lint-Plus" http://www.cleanscape.net/stdprod/lplus/index.html ClearMaker http://www.balthazar.hu "CMT++" http://www.testwell.fi CodeCompanion http://www.jenssoft.com CodeSurfer http://www.grammatech.com "Dependency Walker" http://www.dependencywalker.com/ floppy/fflow http://netlib2.cs.utk.edu/floppy/ ftnchek http://www.dsm.fordham.edu/~ftnchek Hindsight/SQA http://www.integrisoft.com Krakatau http://www.powersoftware.com/ McCabe QA http://www.mccabe.com METRIC http://www.soft.com/Products/index.html ObjectDetail http://www.obsoft.com CodeWizard http://www.parasoft.com Jtest http://www.parasoft.com PC-lint/FlexeLint http://www.gimpel.com/ PC-Metric http://www.molalla.net/~setlabs PolySpace Verifier http://www.polyspace.com Plum Hall SQS http://www.plumhall.com QA C http://www.prqa.co.uk QA C++ http://www.prqa.co.uk "QA Fortran" http://www.prqa.co.uk "QStudio Java" http://www.qa-systems.com Safer C Toolset http://www.oakcomp.co.uk/SoftwareProducts.html SofAudit http://www.soring.hu/index.html STATIC http://www.soft.com/Products/index.html TestBed http://www.easternsystems.com TestWorks/Advisor http://www.soft.com/Products/index.html 缺陷跟踪工具 1CR http://www.plus-one.com/+1CR_fact_sheet.html Aardvark http://www.red-gate.com/ AdminiTrack http://www.adminitrack.com Alcea Fast BugTrack http://www.alceatech.com/ AllChange 2000 http://www.intasoft.co.uk/intasoft/ BugAware http://www.bugaware.com "Bugbase 2000" http://www.threerock.com "Bugcentral.com" http://www.bugcentral.com/ BugCollector Pro http://www.nesbitt.com/ Bug/Defect Tracking Expert http://www.bug-defect-tracking-expert.com/ "Buggit" http://www.pb-sys.com/ Buggy http://www.novosys.de/Buggy/Buggy.html "Bugzero" http://www.websina.com/bugzero/ Bugzilla http://www.mozilla.org/projects/bugzilla/ "Census" http://www.metaquest.com/ "ClearQuest" http://www.rational.com/products/clearquest/ CustomerFirst http://www.custfirst.com/products.html Debian Bug Tracking System http://www.chiark.greenend.org.uk/~ian/debbugs/ Defect Tracker (New Fire) http://www.newfire.com/ Defect Tracker (Pragmatic) http://www.Pragmaticsw.com/Pragmatic/DefectTrac ker.asp Defect Tracking System (DTS) http://www.open.com.au/dts/ "defectX" http://www.defectx.com/ DevTrack http://www.techexcel.com/ "d-Tracker" http://www.empirix.com/ elementool http://elementool.com/ "ExtraView" http://www.extraview.com/extraview_home.html FogBUGZ http://www.fogcreek.com/FogBUGZ/ JitterBug http://samba.anu.edu.au/cgi-bin/jitterbug Keystone Problem Tracking System http://www.stonekeep.com/ NeumaPT http://www.neuma.com/ SWBTracker http://www.softwarewithbrains.com/swbtrack.htm "Squish" http://www.squishlist.com T-Plan Incident Manager http://www.t-plan.co.uk TeamTrack http://www.teamshare.com TeamTrack Workgroup http://www.teamshare.com Team Tracker http://www.hstech.com.au/TeamTracker/ TestTrack http://www.seapine.com "TrackWeb Defects" http://www.soffront.com/ Trackgear http://www.logigear.com/ TrackRecord http://www.numega.com/devcenter/tr.shtml "Trackwise" http://www.sparta-systems.com/ 企业级自动化测试工具WinRunner 提名理由:Mercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。 工业标准级负载测试工具Loadrunner [点击图片可在新窗口打开] 提名理由:LoadRunner 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 全球测试管理系统testdirector [点击图片可在新窗口打开] 提名理由:TestDirector 是业界第一个基于Web的测试管理系统,它可以在您公司内部或外部进行全球范围内测试的管理。通过在一个整体的应用系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及错误跟踪等功能,TestDirector极大地加速了测试过程。 功能测试工具Rational Robot [点击图片可在新窗口打开] 提名理由:IBM Rational Robot 是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面 IBM Rational TestManager 上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。 单元测试工具xUnit系列 [点击图片可在新窗口打开] 提名理由:目前的最流行的单元测试工具是xUnit系列框架,常用的根据语言不同分为JUnit(java),CppUnit(C++),DUnit (Delphi ),NUnit(.net),PhpUnit(Php )等等。该测试框架的第一个和最杰出的应用就是由Erich Gamma (《设计模式》的作者)和 Kent Beck(XP(Extreme Programming)的创始人 )提供的开放源代码的JUnit。 功能测试工具SilkTest [点击图片可在新窗口打开] 提名理由:Borland SilkTest 2006属于软件功能测试工具,是Borland公司所提出软件质量管理解决方案的套件之一。这个工具采用精灵设定与自动化执行测试,无论是程序设计新手或资深的专家都能快速建立功能测试,并分析功能错误。 性能测试工具WAS [点击图片可在新窗口打开] 提名理由:Microsoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响。 自动化白盒测试工具Jtest [点击图片可在新窗口打开] 提名理由:Jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。parasoft同时出品的还有C++ test,是一款C/C++白盒测试工具。 功能和性能测试的工具JMeter [点击图片可在新窗口打开] 提名理由:JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。 性能测试和分析工具WEBLODE [点击图片可在新窗口打开] 提名理由:webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能。 测试工具大全 Author: Vince 工具类别 工具名称 生产厂商 相关网站 通用功能自动化测试工具 Winrunner Mercury Quicktest pro Mercury Xrunner Mercury QARun Compuware TestPartner Compuware WebKing Parasoft http://www.parasoft.com Robot IBM Rational http://www.ibm.com/cn Visual Test IBM Rational http://www.ibm.com/cn Functional Tester IBM Rational http://www.ibm.com/cn SilkTest Segue SilkTest International Segue e-Tester Empirix WebFT Radview TestComplete AutomatedQA QA Wizard Seapine Software EggPlant RedStone Test Edition Microsoft Visual Studio PureTest Minq Autotester Autotester Testbench400 Original Software TestExpert VEReCOMM TestRunner Qronus TTCN suite Telelogic http://www.telelogic.com.cn QC/Replay Centerline Web AutoTester eValid Software Research WebART OCLC MaxQ 开源 WebInject 开源 Marathon 开源 性能测试/监控工具 LoadRunner Mercury SiteScope Mercury Topaz Mercury QaLoad Compuware PerformaSure/benchmark Quest Silkperformer Segue Silkperformer Lite Segue SilkCentralTM Performance Manager Segue e-Load Empirix Robot IBM Rational http://www.ibm.com/cn Performance Tester IBM Rational http://www.ibm.com/cn WebLoad RadView Web applicaton stress tool Microsoft Application center test Microsoft PureLoad Minq Athene APR Metron ForeCast Facilita Impact/Impact for CBT Cyrano Berkeley Laboratory sniffer Lawrence Jmeter 开源 openSTA 开源 Siege 开源 StressMark 开源 DBMonster 开源 白盒测试/代码分析工具 VcTester ezTester http://www.eztester.com Jtest Parasoft http://www.parasoft.com C++test Parasoft http://www.parasoft.com SOA test Parasoft http://www.parasoft.com .test Parasoft http://www.parasoft.com Codewizard Parasoft http://www.parasoft.com Insure++ Parasoft http://www.parasoft.com DataRecon Parasoft http://www.parasoft.com Numega devpartner studio Compuware DevPartnerJavaEdition Compuware BoundsChecker Compuware SmartCheck Compuware DBPartner Compuware Bean-test Empirix Aqtime AutomatedQA QESatJava AutomatedQA Visual Unit Unitware PC-lint Gimpel Software Macabe Macabe Optimizeit Suite Borland JProbe Suite Quest Software Application assurance suite Quest Software Sql optimizer Quest Software Jprofiler ej-technologies workbench Cyrano Logiscope TeleLogic http://www.telelogic.com.cn rulecheck TeleLogic http://www.telelogic.com.cn SilkPerformer Component Test Edition Segue Purifyplus IBM rational http://www.ibm.com/cn Rational Test Realtime IBM rational http://www.ibm.com/cn junit 开源 cactus 开源 Hansel 开源 TestNG 开源 StrutsTestCase 开源 JFCUnit 开源 Httpunit 开源 Dunit 开源 cppunit 开源 http://sourceforge.net/projects/cppunit Nunit 开源 Xunit 开源 JTR 开源 MallocDebug Linux平台工具 Valgrind Linux平台工具 Kcachegrind Linux平台工具 dmalloc Linux平台工具 ElectricFence Linux平台工具 LeakTracer Linux平台工具 memprof Linux平台工具 ccmalloc Linux平台工具 mprof Linux平台工具 yamd Linux平台工具 njamd Linux平台工具 mpatrol Linux平台工具 嵌入式测试工具 VcTester ezTester http://www.eztester.com codetest Metrowerks Cantata/cantana++ IPL IceMaster Reflex Technology System test Reflex Technology scorecast DDC-I Testquest Testquest UniText ATTOL vectorcast Vector software testrunner Qronus Logiscope Telelogic http://www.telelogic.com.cn 测试管理工具 TestDirector(QualityCenter) Mercury QADirector Compuware certify Worksoft Product manager Aimware SilkCentral Test Manager Segue Doors Telelogic http://www.telelogic.com.cn e-manager Empirix testmanager IBM Rational http://www.ibm.com/cn TestView Manager RadView Professional T-Plan 缺陷管理工具 TestDirector(QualityCenter) Mercury ClearQuest IBM Rational http://www.ibm.com/cn TrackRecord Compuware TestTrack pro Seapine TrueTrack McCabe Devtrack Techexcel Notes IBM Lotus SilkCentral Issue Manager Segue PVCS Tracker Merant AR System Remedy URTrack LealSoft Butterfly Hansky Bugzilla 开源 Mantis 开源 JIRA 开源 BugFree 开源 配置管理工具 ClearCase IBM Rational http://www.ibm.com/cn PVCS Version Manager Merant VCS Diamond StarTeam Borland Perforce Perforce TRUEchange McCabe SYNERGY CM Telelogic http://www.telelogic.com.cn VSS Microsoft Firefly Hansky CVS Subversion SCCS RCS CCC/Harvest Computer Associa
-
2020-08-17 17:57:21
源地址:Memory Debuggers
有几种工具可用于查找内存泄漏或用于报告程序的各个内存分配。 这些工具可帮助分析内存使用模式,检测不平衡的分配和释放,报告缓冲区超载和欠载等。
内容:
1.mtrace
mtrace是glibc的内置部分,它可以检测由不平衡的malloc / free调用引起的内存泄漏。 为了使用它,程序被修改为调用mtrace()和muntrace()以开始和停止分配跟踪。 创建一个日志文件,然后可以通过“ mtrace” Perl脚本对其进行扫描。 “ mtrace”程序仅列出不平衡的分配。 如果源可用,则可以显示发生问题的源行。 mtrace可以在C和C ++程序上使用。
主页:http://wikipedia.org/wiki/Mtrace
2.memwatch
memwatch是一个程序,它不仅可以检测malloc和释放错误,还可以在分配的空间(缓冲区溢出和不足)之外进行读写操作。 要使用它,您可以修改源以包括memwatch代码,该代码提供malloc和free的替换。
memwatch无法捕获的某些内容是写入已释放的地址,并从分配的内存外部读取数据。
3.mpatrol
mpatrol看起来像memwatch。
可以查看:http://mpatrol.sourceforge.net/
4.dmalloc
“调试内存分配或dmalloc库旨在取代系统的malloc,realloc,calloc,free和其他内存管理例程,同时提供可在运行时配置的强大调试工具。这些工具包括诸如内存泄漏跟踪之类的东西。 ,栅栏后写检测,文件/行号报告和常规统计记录。”
该库可以在不修改现有程序的情况下使用,并使用环境变量来控制其运行以及要记录的问题集。
主页位于:https://dmalloc.com/
5.dbgmem
dbgmem看起来像是另一个动态库替换工具,类似于dmalloc(但功能可能更少)。
主页:http://dbgmem.sourceforge.net/
6.valgrind
valgrind进行动态二进制检测以分析程序,并提供了许多内存问题检测工具和性能分析工具。 它支持许多不同的体系结构和平台。
主页:https://elinux.org/Valgrind
7.Electric Fence
主页:https://elinux.org/Electric_Fence
8.Tutorials or Overviews
嵌入式系统中的内存泄漏检测。
更多相关内容 -
mpatrol-开源
2021-04-14 05:14:46mpatrol是一个链接库,它尝试诊断由于错误使用动态分配的内存而导致的运行时错误,包括写入可用内存和内存泄漏。 -
mpatrol:MPatrol 1教程文档和项目文件
2021-03-28 06:45:36mpatrol:MPatrol 1教程文档和项目文件 -
常用内存泄露检测手段 dmalloc, mpatrol mtrace memwatch dbgmem valgrind Electric Fence
2021-02-19 13:32:103mpatrol 4dmalloc 5dbgmem 6valgrind 7Electric Fence dmalloc是一个简单易用的C/C++内存leak检查工具,以一个运行库的方式发布。 dmalloc能够检查出直到程序运行结束还没有释放的内存,并且能够精确指出在 ...dmalloc用法快速入门
常用内存泄露检测手段有
dmalloc是一个简单易用的C/C++内存leak检查工具,以一个运行库的方式发布。
dmalloc能够检查出直到程序运行结束还没有释放的内存,并且能够精确指出在
哪个源文件的第几行。dmalloc 主页: http://dmalloc.com
支持的平台:AIX, BSD/OS, DG/UX, Free/Net/OpenBSD, GNU/Hurd, HPUX, Irix, Linux, MS-DOG, NeXT, OSF, SCO, Solaris, SunOS, Ultrix, Unixware, Windoze, and even Unicos on a Cray T3E
最新版本: 5.5.2
安装:下载 http://dmalloc.com/releases/dmalloc-5.5.2.tgz
-
tar zxvf dmalloc-5.5.2.tgz
-
cd dmalloc-5.5.2
-
./configure
-
make
-
make install
设置环境变量:
对于 Bash, ksh, and zsh (http://www.zsh.org/), 在 `.bashrc', `.profile', or `.zshrc'
文件中加入一行 ( -b 参数表示针对Bash的输出):function dmalloc { eval `command dmalloc -b $*`; }
然后重新登陆用户,或者执行: source ~/.bashrc 或 source ~/.profile
接下面执行:
-
dmalloc -l logfile -i 100 low
在源文件中添加下面的C代码:
#ifdef DMALLOC
#include "dmalloc.h"
#endif编译使用的CFLAGS: -DDMALLOC -DDMALLOC_FUNC_CHECK
如: gcc -DDMALLOC -DDMALLOC_FUNC_CHECK dm_test.c
执行:
./a.out运行上面的命令会在当前目录下生成 logfile文件,查看logfile的内容如下:
cat logfile
-
1214894489: 2: Dmalloc version '5.5.2' from 'http://dmalloc.com/'
-
1214894489: 2: flags = 0x4e48503, logfile 'logfile'
-
1214894489: 2: interval = 100, addr = 0, seen # = 0, limit = 0
-
1214894489: 2: starting time = 1214894489
-
1214894489: 2: process pid = 9560
-
1214894489: 2: Dumping Chunk Statistics:
-
1214894489: 2: basic-block 4096 bytes, alignment 8 bytes
-
1214894489: 2: heap address range: 0xb8020000 to 0xb8029000, 36864 bytes
-
1214894489: 2: user blocks: 1 blocks, 4043 bytes (10%)
-
1214894489: 2: admin blocks: 8 blocks, 32768 bytes (89%)
-
1214894489: 2: total blocks: 9 blocks, 36864 bytes
-
1214894489: 2: heap checked 1
-
1214894489: 2: alloc calls: malloc 2, calloc 0, realloc 0, free 0
-
1214894489: 2: alloc calls: recalloc 0, memalign 0, valloc 0
-
1214894489: 2: alloc calls: new 0, delete 0
-
1214894489: 2: current memory in use: 11 bytes (2 pnts)
-
1214894489: 2: total memory allocated: 11 bytes (2 pnts)
-
1214894489: 2: max in use at one time: 11 bytes (2 pnts)
-
1214894489: 2: max alloced with 1 call: 6 bytes
-
1214894489: 2: max unused memory space: 53 bytes (82%)
-
1214894489: 2: top 10 allocations:
-
1214894489: 2: total-size count in-use-size count source
-
1214894489: 2: 6 1 6 1 dm_test.c:71
-
1214894489: 2: 5 1 5 1 dm_test.c:69
-
1214894489: 2: 11 2 11 2 Total of 2
-
1214894489: 2: Dumping Not-Freed Pointers Changed Since Start:
-
1214894489: 2: not freed: '0xb8028fc8|s1' (6 bytes) from 'dm_test.c:71'
-
1214894489: 2: not freed: '0xb8028fe8|s1' (5 bytes) from 'dm_test.c:69'
-
1214894489: 2: total-size count source
-
1214894489: 2: 6 1 dm_test.c:71
-
1214894489: 2: 5 1 dm_test.c:69
-
1214894489: 2: 11 2 Total of 2
-
1214894489: 2: ending time = 1214894489, elapsed since start = 0:00:00
那么,哪个地方的内存leak就一目了然了。
//====== dm_test.c 源代码 =============
-
#include <stdio.h>
-
#include <stdlib.h>
-
#include <string.h>
-
-
#ifdef DMALLOC
-
#include <dmalloc.h>
-
#endif
-
-
int main(int argc, char **argv)
-
{
-
-
char *str;
-
-
str = malloc(5);
-
-
str = malloc(6);
-
-
return 0;
-
}
-
-
嵌入式设备的内存泄漏问题---转发
2021-01-17 16:08:35查找内存泄漏的工具很多,最常用的释放工具就是dmalloc和mpatrol,这些工具提供了记录并检查所有内存分配的调试版堆栈,从而有利于分析内存泄漏和悬挂指针。 检测内存泄漏的关键是要能截获住对分配内存和释放内存的...很多实时嵌入式设备是长时间不间断运行的,即使是少许的泄漏,也会积少成多,对嵌入式系统带来灾难性的影响。这几天,我在嵌入式项目中就饱尝到这个痛苦,让我明白到嵌入式实时系统的应用软件也会有许多内存问题,从而导致嵌入式系统的崩溃。例如非法的内存访问、各种死锁以及诸如堆栈溢出、数组越界和内存泄漏等。
Windows CE作为最流行的一种嵌入式,现正广泛被应用。我所负责的嵌入式应用程序也是在Windows CE平台上开发的。在进入测试阶段中,我发现有一个程序模块系统内存和资源消耗急剧增加,持续增长到出现OutOfMemoryError为止,然后自动重启。这个问题折腾到我生不如死,痛苦不堪。花了我好几个通宵达旦的加班后,经过分析终于确认Windows CE内存泄漏是造成这次Windows CE系统崩溃的主要原因。这里与大家分享我在开发过程中遇到的内存泄漏的检测和处理解决过程。
一.Windows CE如何进行内存分配?
为了判断是否有内存泄露,我们首先需要了解Windows CE是如何管理内存的。许多嵌入式程序员都有一个共识,就是如果评选在Windows CE程序中遇到最多的问题,那其中一个问题一定有内存问题。
(1)什么是Windows CE内存管理
一般来说,运行Windows CE的嵌入式设备出于紧凑型的考虑内存都不大,以至于有时候有些程序员会为了节省内存开支而牺牲程序的某些性能。但尽管WinCE系统的内存很小,用来管理内存的函数却十分完善。Windows CE实现了Windows XP中几乎全部的Win32内存管理API。例如,Windows CE支持虚拟内存分配,本地和分离的堆管理,甚至还有内存映射文件。像Windows XP一样,Windows CE支持带有应用程序间内存保护功能的32位地址空间,这一点对于多程序和多线程运行时是非常重要的功能。但是Windows CE毕竟是被设计来应用于实时场合的,所以它底层的内存结构又不同于Windows XP。
Windows CE内核可以在Flash上直接运行,也可以加载到内存中运行。Flash的运行方式,是把内核的可执行映像烧写到Flash上,系统启动时从Flash的某个地址开始执行。在这种情况下,Windows CE系统就像直接读,存储在Flash上的程序能够以现场执行的方式运行。这种能力对小型系统来说使之在具有巨大的优势,这样这能快速启动一个应用程序,因此这种方法被很多嵌入式系统所采用。另一种是内核加载方式,是把内核的压缩文件存放在Flash上,系统启动时读取压缩文件在内存里解压,然后开始执行。
(2)虚拟内存和函数应用
和大多数现代操作系统一样,Windows CE实现按需调页的虚拟内存机制。由于Windows CE系统使用了虚拟内存,这就给应用程序造成了一个假象,以为计算机安装的内存远远超过自己所需要的数量。Windows CE是32位的操作系统,因此支持4GB的虚拟地址空间。Windows把这些地址空间分给进程和系统使用,每个部分可以获得2GB的虚拟内存。
虚拟内存是内存类型中最基础的。Windows CE实现了系统的虚拟内存管理,在一个虚拟内存系统中,应用程序主要处理这个虚拟的地址空间,并不涉及到由管理的物理内存。系统调用虚拟内存API来为其它类型内存分配内存,包括堆和栈。Windows CE虚拟内存页可以处在三种状态:自由(free),保留(reserved),或被提交(committed)。
简单说,就是当一个应用程序要查询系统的内存时,可使用虚拟内存API,包括VirtualAlloc,VirtualFree和VirtualReSize函数,这些函数可以直接操作虚拟内存空间的虚拟内存页面。例如,页面可以保留,提交给物理内存,或使用这些函数释放。Windows CE实现了Win32的GetSystemInfo和GlobalMemoryStatus函数。另一个检测系统状态的函数是:void GlobalMemoryStatus(LPMEMORYSTATUS lpmst),通过GlobalMemoryStatus返回的信息可以验证Windows CE内存结构。
(3)释放虚拟内存
不同于Windows XP,Windows CE只支持在堆中分配固定(fixed)的块。这简化了内存块在堆中的处理,但是这使得堆在分配和释放一段时间后会产生碎片。当堆里已经清空的时候,仍然会占用大量的虚拟内存页,因为系统不能在堆中内存页没有完全释放的时候回收这些页。这时,一般情况下是可以通过调用VirtualFree来取消提交,或释放虚拟内存。从物理RAM页中取消提交或者取消映射,但是保持页被保留的状态,当在区域中的所有的页通过VirtualFree被释放时,也应该处在同样的情况下。更确切地说,区域中的全部页要被释放,那这些页要么都是被提交的页,要么都是被保留的页。如果有些页被提交,有些页被保留,那么VirtualFree函数调用就会失败。
实际上,Windows CE会监视系统自由的内存,并对越来越少的内存作出响应。当很少内存可用时,Windows CE首先发送WM_HIBERNATE消息,接下来会限制可能的内存分配。当应用程序被发送了一个WM_HIBERNATE消息后,系统将检测内存级别,确认是否可用内存在限度之上,如果可用内存不足,WM_HIBERNATE消息将被发送给下一个程序,这会持续到所有程序被发送了WM_HIBERNATE消息。
二.什么是Windows CE内存泄露
虽然Windows CE有许多方法来管理系统内存的运行,但还是有可能发生内存错误的。Win32编程中常见内存错误:①内存分配错误;②使用未初始化的内存;③内存泄露;④使用已经释放的内存资源。
(1)什么是内存泄漏
内存泄漏是指程序在运行过程中申请的内存,在程序结束时没有被释放。我们常说的内存泄漏是指堆内存的泄漏,堆内存是指程序从堆中分配的。一般来说,应用程序是使用从堆中分配到一块内存,使用完后程序必须负责相应的释放该内存块。否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。
一般来说,在所有时刻Windows CE内存管理器都知道进程所拥有的物理内存和虚拟内存。然而,如果进程分配内存时但由于Bug而无法释放内存(内存泄漏),内存管理器就可能无法了解这些已分配的内存,也无法重新访问这些内存,而必须等到进程退出时回收内存。但需要特别注意的是,同样的程序在Window XP平台上可能没有什么问题,但在缺乏内存的Windows CE平台,经过长时间运行该程序可能会内存耗尽而导致系统重启,这是我在经过几个生不如死的通宵达旦测试后得到的宝贵经验和教训。
因此,内存泄漏引发的性能失常完全不同于程序错误,这些问题很难通过调试器对代码进行单步调试加以解决。对于将会在某时刻退出的桌面应用程序,较小的内存泄漏是可以承受的,因为退出进程将把占用的所有内存返还给操作系统。但对于长时间运行的嵌入式系统,则通常需要确保绝对没有内存泄漏。
(2)常见的内存泄漏原因
常见的内存泄漏有这几种原因:①Windows CE内存碎片。②在局部堆申请的堆只增加不会马上减少,直到程序退出。③程序运行时分配物理内存,当程序使用完后,这些物理内存仍然被占用,直到系统内存不足时分页内存交换到分页文件中,然后才释放掉其占用的物理内存。④Windows CE内存管理的缺陷。
总而言之,内存泄漏产生的主要原因是保留了却不再使用的内存空间。Windows CE虽然有自动管理内存的功能,但内存泄漏也是不容忽视,它往往是破坏嵌入式系统稳定性的重要因素。
三.如何检测和处理内存泄漏?
如何查找引起内存泄漏的原因,一般有两个步骤:第一是安排有经验的编程人员对代码进行走查和分析,找出内存泄漏发生的位置。第二是使用专门的内存泄漏测试工具进行测试。
(1)代码走读检测内存泄漏
通常在怀疑发生内存泄漏之后,第一步是要弄清楚泄漏了什么数据和引起了什么泄漏。一般说来,一个正常的系统在其运行稳定后其内存的占用量是基本稳定的,不应该是无限制的增长的。根据这样的基本假设,我们持续地观察系统运行时使用的内存的大小,如果内存的大小持续地增长,则说明系统存在内存泄漏。
内存泄漏可通过代码走读来发现和定位,也可以用专用的工具来测试和定位。实际上,对于内存泄漏,代码检查有时能比采用任何技术解决方案更快地找到问题所在。预防内存泄漏的唯一方法就是要求程序员在程序结束时,必须将每个申请的内存都释放。
(2)使用工具检测内存泄漏
一旦知道确实发生了内存泄漏,就需要更专业的工具来查明为什么会发生泄漏。在这个时候,我们通常需要使用一些开销较低的工具来监控和查找内存泄漏。查找内存泄漏的工具很多,最常用的释放工具就是dmalloc和mpatrol,这些工具提供了记录并检查所有内存分配的调试版堆栈,从而有利于分析内存泄漏和悬挂指针。
检测内存泄漏的关键是要能截获住对分配内存和释放内存的函数的调用,当截获住这两个函数,我们就能跟踪每一块内存的生命周期。比如,每当成功的分配一块内存后,就把它的指针加入一个全局的list中;每当释放一块内存,再把它的指针从list中删除。这样,当程序结束的时候,list中剩余的指针就是指向那些没有被释放的内存。哪么,最简单的内存泄漏检测方式就是截获住这些指针。
总的来说,无论那种方式,我们都需要认真检查应用程序任何内存分配调用的返回代码,因为在Windows CE中比在桌面版本的Windows中有更多的机会导致内存分配失败,从而会导致内存泄漏。
-
【转】不懂得使用工具的测试不是好测试
2015-11-26 11:33:00mpatrol http://www.cbmamiga.demon.co.uk/mpatrol/ "ObjectTester" http://www.obsoft.com Inuse http://www.parasoft.com Rational Purify http://www.rational.com/products/purify_unix/index.jtmpl ... -
一个跨平台的 C++ 内存泄漏检测器
2016-07-11 16:21:01转自 ... 内存泄漏对于C/C++程序员来说也可以算作是个永恒的话题了吧。在Windows下,MFC的一个很有用的功能就是能在程序...在Linux下,相对来说就没有那么容易使用的解决方案了:像mpatrol之类的现有工具,易用性... -
Linux 下几款程序内存泄漏检查工具
2019-01-21 13:41:09mpatrol 一个跨平台的 C++ 内存泄漏检测器 dbgmem 也是一个动态库发布的形式,优点类似dmalloc,但是相比之下,可能特点少了一些 Electric Fence 不仅仅能够跟踪malloc()和free(),同时能够检查读访问以及写入,... -
用mtrace检查内存泄漏
2011-07-27 15:53:08mpatrol(http://www.cbmamiga.demon.co.uk/mpatrol/) 这俩个工具的功能相当不错,能对程序进行相当全面的检查 很奇怪,redhat 9 居然不带mtrace perl脚本,只好下载gcc源码编译了 wget --passive-ftp ftp://... -
dmalloc arm-linux平台使用
2016-04-18 20:00:00话说“工欲善其事,必先得其器”,用C语言写程序,最怕遇到个什么内存泄漏,内存越界访问了,心里那个急啊。。。 如果在i368-linlux上,valgrind工具是首选,但在arm-linux平台上,如何呢,dmalloc就是一个不错的... -
LINUX内存泄漏工具整理
2020-08-25 13:05:56mpatrol mpatrol和memwatch类似 dmalloc dmalloc库被设计成可以直接替换系统的malloc、realloc、calloc、free和其他内存管理例程,同时提供了强大的可在运行时配置的调试工具。这些功能包括内存泄漏跟踪、隔离写后... -
dmalloc用法快速入门
2012-06-05 00:35:003 mpatrol 4 dmalloc 5 dbgmem 6 valgrind 7 Electric Fence dmalloc是一个简单易用的C/C++内存leak检查工具,以一个运行库的方式发布。 dmalloc能够检查出直到程序运行结束还没有释放的内存,并且能够... -
A Cross-Platform Memory Leak Detector
2014-11-03 11:58:00Under GCC, current available tools like mpatrol are relatively difficult to use, or have a big impact on memory/performance. This article details the implementation of an easy-to-use, cross-platform ... -
Linux下几款C++程序中的内存泄露检查工具
2016-07-19 21:56:41mpatrol 一个跨平台的 C++ 内存泄漏检测器 dbgmem Electric Fence 1 被测程序 为了方便测试,,我们编写了一个简单的程序, 循环10次每次申请了一个100个字节的单元, 但是却不... -
内存管理面经总结
2022-02-27 15:45:37如何检测内存泄漏 在Linux下内存泄漏检测 valgrind、mtrace、dmalloc、memwatch、mpatrol、dbgmem、Electric Fence 在Windows下内存检测 VLD 如何避免内存泄漏 工程前期良好的设计规范,养成良好的编码规范,申请的... -
十大网站压力测试软件 - WEB压力测试工具介绍
2021-07-23 06:36:56.html JSUnit http://www.edwardh.com/jsunit/ Junit http://www.junit.org/ MDBDiff http://jupiter.drw.net/matpie/PBS ... ts/retired/MDBDiff.h tml Move for DB2 http://www.princetonsoftech.com/ mpatrol ... -
浅谈内存泄漏
2021-11-24 09:51:36引子 我们写的程序是如何一步一步运行起来的? 为什么虚拟内存大小可以比实际物理内存大 cpu是如何管理物理内存和映射内存的 …… 内存泄漏是什么,如何定位和排查 内存泄漏的现象 在实际工作中,我们可能会遇到... -
Linux C内存泄露检测工具
2021-05-13 13:00:27如: ccmalloc http://www.inf.ethz.ch/personal/biere/projects/ccmalloc/ccmalloc-english.html mpatrol http://www.cbmamiga.demon.co.uk/mpatrol/ 这俩个工具的功能相当不错,能对程序进行相当全面的检查 01 #... -
C/C++中的内存管理小结
2021-05-21 09:37:515.2 如何检测内存泄露 在linux下内存泄漏检测 valgrind、mtrace、dmalloc、memwatch、mpatrol、dbgmem、Electric Fence 在windows下内存泄漏检测 VLD 5.3 如何避免内存泄漏 1.工程前期良好的设计规范,养成良好的... -
2021-04-02
2021-04-02 10:32:48memwatch 和dmalloc一样,它能检测未释放的内存、同一段内存被释放多次、位址存取错误及不当使用未分配之内存区域 mpatrol 一个跨平台的 C++ 内存泄漏检测器 dbgmem Electric Fence 1 被测程序 为了方便测试,我们... -
cygwin1.79+apache2+php5+mysql5下kbs+blog安装手记
2021-02-05 13:09:49devel gmp libgmp-devel libxml2 libxml2-devel libiconv zlib zlib-devel gd libgd-devel libfreetype-devel jpeg libjpeg-devel libpng14 ......编译安装php 先去掉/home/kbsbbs/src/bbs.h中的#include "mpatrol.h... -
mfc存储对象的数组
2020-12-23 07:36:11MFC模板CArray及其派生类 CArray...在Linux下,相对来说就没有那么容易使用的解决方案了:像mpatrol之类的现有工具,易用性、附加开销和性能都不是很理想。本文实现一个极易于使用... 文章 杨粼波 2017-10-09 911浏览量 -
【转载】让我生不如死的WINCE内存泄漏
2020-12-22 03:23:05查找内存泄漏的工具很多,最常用的释放工具就是dmalloc和mpatrol,这些工具提供了记录并检查所有内存分配的调试版堆栈,从而有利于分析内存泄漏和悬挂指针。 检测内存泄漏的关键是要能截获住对分配内存和释放内存的... -
Memory Leak Detection in C++
2016-04-16 23:54:00If at some point the programmer wants to simulate a stress test on a smaller memory footprint, mpatrol can be instructed to limit the memory footprint. This allows for testing conditions that may not ... -
C/C++中的内存管理
2020-05-02 20:36:395.2 如何检测内存泄露 在linux下内存泄漏检测 valgrind、mtrace、dmalloc、memwatch、mpatrol、dbgmem、Electric Fence 在windows下内存泄漏检测 VLD 5.3 如何避免内存泄漏 1.工程前期良好的设计规范,养成良好的... -
【代码质量】如何使用Valgrind检测内存泄漏
2020-06-03 12:27:00以一个运行库的方式发布 memwatch 和dmalloc一样,它能检测未释放的内存、同一段内存被释放多次、位址存取错误及不当使用未分配之内存区域 mpatrol 一个跨平台的 C++ 内存泄漏检测器 dbgmem Electric Fence 3 ...