Figure 3A: Quantify call graph of a mixed VB. NET and C. The first step in handling memory leaks is to detect them. One very intuitive way to do this is to visualize overall memory usage and take snapshots of memory in the program under test PUT.
This lets you see potential memory leaks in the running application. This feature is available in Purify for Java and. NET managed applications. For example, if snapshots of memory usage for the component running on the server show that overall memory usage increases after each client session, then it is very likely that this component leaks memory see Figure 4. Figure 4: Overview of thread status and memory usage in Purify for Windows.
Visual error detection is just the first stage of runtime analysis. We also need to understand exactly what happens during the run. For that purpose, runtime analysis should be based on exact measurements of parameters vital for the application's execution:.
Function List View is a typical runtime analysis view that can be generated with a specialized Runtime analysis tool such as Quantify see Figure 5. This view provides exact information about the number of calls to methods, time spent in methods only, time spent and memory accumulated in selected methods and all their descendants, and so on. A runtime analysis tool such as Quantify can also extend the information in Measurement Example 1 to include information about the distribution of measured data between calling methods and descendants.
This is shown in the Function Detail View Figure 6. This view highlights callers and descendants that contribute to a performance or memory hotspot -- information that can help detect the exact cause of a performance or memory bottleneck.
Figure 6: Quantify function detail view for a Visual C. As we explained earlier, in some cases -- and especially when assessing the value of available testing methods -- it is useful to measure the percentage of code covered while testing, or simply to mark all the methods that haven't been tested after a series of tests. Figure 7: PureCoverage display of code coverage on the method level for a mixed C. NET and VB. Again, let's look at some examples.
Purify can pinpoint the exact line of code where a developer has created a memory error. It doesn't even need source files to provide this information; Purify detects errors in memory and uses debug information to trace these errors back to the responsible lines of code see Figure 8. In this particular example, the developer forgot to take the termination string into consideration when building an array variable. This error was causing the release build of the application to crash, whereas the debug build worked fine.
Quantify has a unique capability to measure distribution of time recorded for each of the user methods per line of code. Quantify annotated source displays times measured for each line of code, along with times spent and inside functions called on the line. This information can help you narrow the performance bottleneck down to an individual line of code Figure 9. In Java and. NET managed code, it is not possible to make runtime memory errors such as out of bounds reads and writes and free memory reads and writes, because the automatic memory management in the runtime subsystem prevents developers from directly accessing allocated memory.
However, this automated memory management doesn't prevent programmers from forgetting references to the objects' allocated memory. As long as there is a reference to such dynamically allocated objects somewhere in the code, they will stay in memory and will not be cleaned by the automatic memory management garbage collector.
By doing a runtime analysis with Purify, however, you can pinpoint the exact line of code where the reference to the object in question has been created Figure Figure Purify object and reference graph for a Java application. Yet another way to leverage runtime analysis is by documenting the application's runtime behavior for future use. This helps you assess the overall quality of the project and measure the influence of newly introduced features and code changes on overall application performance, reliability, and test harness completeness.
This advanced way of practicing runtime analysis involves collecting runtime data for each iteration of the component or application under development and analyzing the data at different stages in the project lifecycle.
This information can help in determining overall project quality as well as the effect of new feature additions and bug fixes on overall quality. Advanced runtime analysis tools such as PurifyPlus provide features to analyze multiple test runs by, for example, allowing the user to merge code coverage data from various tests or test harnesses, or to create separate data sets for comparisons of consecutive iterations of test measurements, as shown in Figure In Figure 11, Quantify compares two data sets and highlights chains of calls where performance has improved green line and chains of calls where performance has dropped red line.
The calculated data is available in both the Call Graph view and in the more detailed Function List view. Even if you are not in a position to create an automated test environment, you can still automate data analysis by taking advantage of runtime analysis data saved as ASCII files. Figure 12 shows an example of a performance profile imported into Microsoft Excel.
You can easily automate data analysis in Excel by creating simple Visual Basic applications, or with any of the popular scripting languages: Perl, WSH, JavaScript, and so on. PurifyPlus for UNIX comes with a set of scripts that can help you manage and analyze data collected from various tests.
Figure Quantify compare runs report. Figure Quantify performance report imported into Excel. These are the reasons that powerful runtime analysis tools like PurifyPlus were created. What is PurifyPlus? PurifyPlus is a runtime analysis tool suite that monitors your program as it runs and reports on key aspects of its behavior: How much memory does it use? Does it leak memory? Does it contain memory access errors?
How long does it take to run; where are the bottlenecks? How much of the source code is actually running? The major components of PurifyPlus are: Purify for memory usage tracking and memory error detection Quantify for performance analysis, code flow, and thread visualization PureCoverage for source code coverage analysis Runtime analysis in the program development cycle Runtime analysis has a place during the interactive compile-edit-debug development cycle and also in the automated builds and tests that are a key part of any project's quality plan.
Basic PurifyPlus capabilities As noted above, PurifyPlus has three major components: Purify for memory analysis, Quantify for performance analysis, and PureCoverage for code coverage analysis. Advanced memory debugging: Locates the cause of memory corruption errors and provides detailed information, such as the error location function call stack and the size of the affected memory.
Memory leak protection: Improves memory utilization and speeds debugging time. Application performance profiling: Highlights application performance bottlenecks and improves application understanding with a graphical representation of function calls.
Code coverage analysis: Identifies untested code with line-level precision. Binary instrumentation technology: Allows integration with third-party libraries and does not require access to source code. Hover on an operating system to view system requirements. Examples of runtime analysis with PurifyPlus The major goals of debugging are to find the root cause of defects and understand application behavior.
Runtime analysis provides additional capabilities that supplement traditional debugging: Visualization of application execution. Measurement of vital runtime parameters, including memory usage, performance, and code coverage. Error detection in user code. Documentation of runtime behavior. Turbo Vision looking style 11 HT editor. Red Hat 8. Creating flash swf output from programming languages.
Frontend: Kplayer. If toolkit is oriented on C, usually it's possible to use it from the other languages. Many links - here. Collections;using System. Generic;using System. Linq;using System. Console: 7 Pine. Front ends: 1 Kmyfirewall. Port scanning detection???
Making the system more securely??? Visual route VisualRoute [Prop] 1 Xtraceroute. Traffic accounting Netstat, Tmeter , Gnutella 3 Lopster. OpenNAP 4 Gnapster. OpenNAP 5 eDonkey. Gnutella 10 Qtella. Gnutella 11 Mutella. Gnutella, console 12 TheCircle.
Direct Connect. Clients: 1 Gtkhx. Work with faxes WinFax 1 HylaFax. Front ends: X-wvdial , kvdial, gtkdial. FTN tosser FastEcho, hpt 1 hpt. Windows Domain, Active Directory 1 Samba. Viewing Windows-network Network neighborhood 1 Samba. Distributed computing All projects. VRML viewer and editor??? Work with Ebay??? Visual Shell???
Russian language patches - here. Viewing all operations with files Filemon Filemon. Console archivers arj, rar, zip, tar, gzip, bzip2, lha The support of any archive from any program - file. Program for files and directories comparison 1 Beyond Compare. Batch file renaming Plugins to TotalCommander, Perl-based 2 Plugins for MC??? Here's an article about this. Task scheduler mstask, nnCron cron, at standard, console. GUI: Kcron. Outlook scheduler Outlook scheduler 1 KOrganizer.
Translators cyrillic Promt, Socrat Ksocrat??? TV program??? Home Portal. But: 1 Sphinx. Program for quick switching between resolutions and frequencies Integrated with system, comes on CD with video card 1 Multires. GUI: 1 Gsearchtool. System monitoring System monitor built-in 1 top console, standard. If you can be shocked by nudity, don't use it :. Text files encoder with automatic detection of character set???
Work with Palm Palm Desktop 1 Kpilot. Allows to carry on Palm. Low-level optimization chipset, pci-bus Powertweak 1 Powertweak-Linux. Automatic change of desktop background??? Convenient switching of the keyboard language??? Windows registry editor RegEdit Kregedit :. Sound Software - lots of it. Tracker music player Winamp, Windows Media Player, Comes with xmms. Using xmp. Can play tracker music with Midi devices. Only mod files.
Midi player Winamp, Windows Media Player, Supports gus pathes and sf2 banks, backend to another software. OGG encoders oggenc oggenc. Work with Real protocol 1 RealPlayer. Multitrack audio processor Cubase 1 Ecasound. Sound tracker Fasttracker, ImpulseTracker 1 Soundtracker. Sound mixer sndvol32 1 Opmixer. Midi-sequencer Cakewalk 1 RoseGarden. Synthesizer Virtual waves, Csound 1 Csound. Record streaming audio into. Viewing the graphic files in console QPEG 1 zgv.
Simple graphic editor Paint 1 Kpaint. Converting the graphic files in pseudographics??? Icon editor Microangelo 1 Gnome-iconedit. Small program for making screenshots Integrated with system PrintScreen , Snag it, Create printed calendars, greeting cards, etc. Cutting video Virtual Dub 1 Avidemux.
Work with TV-tuner in console - 1 Mplayer. Animation Animation Shop, Framework for developing video applications??? No longer available at Corel website. It was Windows version, running under Wine :. Receiving the quotings, news, building graphs and analysing of the financial market.
Financial accounting package global??? Corporate docflow system russian. Where to get Anywhere you want :. The Linux Game Tome happypenguin. Quake 1, 2, 3 1 Quake 1, 2, 3. Chess ChessMaster, Pascal Pascal, BP 1 Freepascal.
Disassembler, Reverse engineering SoftIce The source code is open : 1 ldasm. Frontends: 1 ddd. Powerful editor for site creating, contains set of samples and can be complemented with every sort and kind of plug-ins Dreamweaver Ultradev??? J2EE based application server??? Rational Rose.
0コメント