An Introduction to Runtime Analysis with Rational PurifyPlus

Size: px
Start display at page:

Download "An Introduction to Runtime Analysis with Rational PurifyPlus"

Transcription

1 Copyright Rational Software An Introduction to Runtime Analysis with Rational PurifyPlus by Goran Begic Technical Marketing Engineer, Development Solutions Rational Software There are some people you can never understand, even if you try your best. One moment they're happy and friendly but the next they're moody and angry. And the harder you work to figure out what's going on, the worse it gets. Sometimes understanding a software application under development can be just as frustrating. One moment it produces seemingly positive results, and the next moment it crashes. But understanding software behavior is not as hard as penetrating the psyche of those moody people. A practice called "runtime analysis" can help. Runtime analysis is not a new term; it has been in use for years. However, the term and the software development activities behind it have not been clearly defined or explained. This article will attempt to do so by placing runtime analysis in the context of other Rational best practices and outlining its enormous benefits to software developers, testers, and managers. What Is Runtime Analysis? Let's begin with a simple definition: Runtime analysis is a practice aimed at understanding software component behavior by using data collected during the execution of the component. The term itself points to the main elements of this practice: Runtime. The analysis does not include static ways of analyzing the source code of developed software and relationships between the software's building blocks. Rather, it provides valuable information about how the developed component -- or the whole application -- behaves when it runs, either in the test environment or in the final deployment environment.

2 Analysis. The activity is designed to provide explanations for various exposed or potential misbehaviors. Users play the most important role, because they will combine their logic, intelligence, and knowledge about software development with available data in order to provide answers to questions about what prevents the application from functioning correctly, or running in a timely fashion, or simply failing in some atypical situations. Runtime analysis provides understanding of the following aspects of application execution: Execution paths Code coverage Runtime tracing Memory utilization Memory errors and memory leaks in native applications Memory leaks in.net managed code and Java applications Execution Performance Performance bottlenecks Threading problems Runtime Analysis: An Extension of Debugging Debugging is a well-known activity, practiced by all software developers on a regular basis. Often we assume that an application will work as long as the source code is written with the correct syntax and the component compiles and links without any errors or warnings. That assumption is wrong! Even if the compiler didn't report any errors, the application may not be ready to ship to the customer. Typically, when writing code, we test the basic functionality of a component first and make sure that all requirements are satisfied. Later on in the development cycle, QA (Quality Assurance) teams usually test the software. Such QA tests often focus on the functionality of main use-case scenarios. So, if the functionality of all major use-case scenarios is confirmed, then is the application ready to be shipped to the customer? The answer is still no. The application might still crash on some machines, in some combination of scenarios, or in some untested scenarios -- and its performance might not be satisfactory. The task of all development roles should be to minimize the probability of shipping faulty code to the customer, and the best way to do this is to perform tests as early in the development cycle as possible. It is helpful to think of runtime analysis as an extension of standard debugging tools and methods that can help teams uncover peculiar -- and sometimes very difficult to resolve -- problems. Data Collection During Development Testing

3 Data that allows runtime analysis of every detail of application execution is collected while the application is being tested. This testing can be developer testing: The person who implements features runs basic tests of the developed component's functionality -- by running either unit tests or component tests. Software runtime analysis data can also be collected during QA testing of the application. This type of data collection is often referred to as white-box testing, because the goal is to collect information about the (visible) application internals, whereas functional testing without any insight into the application internals is called black-box testing. Testers who perform black-box testing may not be interested in runtime analysis logs and reports, but testers can collect white-box testing data during black-box testing and use white-box information for describing and reporting either functionality or performance problems to developers. You can increase the quality of the runtime analysis data you collect during testing by using testing automation tools, such as Rational Robot, which can record testing scenarios and play them back over and over again. You can also analyze the runtime analysis data you collect on the same use cases for different iterations of the developed software components. This will give you a better understanding of not only one iteration of the developed software, but also of the impact of newly introduced changes on product quality. If software quality drops between two consecutive iterations of the component, runtime analysis data makes it very easy to find the responsible feature or code change. Runtime Analysis in the Software Development Lifecycle One can argue about the best way to develop software, but I think we can all agree that a methodical approach is more likely to deliver high quality results than an ad hoc approach without planning or role assignments. And whether you design first and then implement features, write tests before working on the code, or even skip process steps and just start with code, the final result -- the developed component or application -- has to be tested for functionality. It should also be associated with requirements to ensure that the final product matches users' needs. And sooner rather than later, it will require debugging. If you have ever developed software, you know that it can easily run off course. To deliver reliable software, you need to understand exactly how the application executes. This understanding should encompass not only the application's logic, but also its performance and memory considerations. Requirements First Requirements often focus on functionality. But, as many who use Rational RequisitePro -- Rational's automated requirements management tool -- have discovered, it's also important to establish requirements that ensure the application quality, both internally and from the perspective of your customer application. For example, two such requirements might be stated as follows: The server component should use the same amount of memory before and after each client session.

4 And The memory used by the application before and after use-case scenario #13 should be the same. Both of these requirements sound logical, don't they? But I have seen applications in use for years that don't meet either one. This might be due to a memory leak, which can seriously damage the final product's quality and the vendor's reputation. In some extreme cases (e.g., a memory leak in the server side component), it can even cause the application -- or the whole system -- to crash. Fortunately, you can use runtime analysis to detect memory leaks during development, so that you can meet these requirements and deliver a high quality product. Here is another example of a vital quality requirement, this time for a Web application: The response time of the component for use-case scenario #91 must be less than or equal to five seconds. Again, runtime analysis can help ensure that you meet this requirement. (And if you do not, the user may well start looking for the information on some other Web site.) And finally, here is an example of a vital requirement for testing: The software is not ready for release if the QA team doesn't test more than 60 percent of the available source code base. Again, this requirement may sound trivial, but think about it. When you released products in the past, did you really know how much code in your application was tested and how much was left for users to "test" in their daily work? With runtime analysis, you can ensure that the source code is thoroughly tested. Software Modeling Personally, I like to dive into coding as soon as possible and work on a small team rather than in a large development group. However, I find that at some point in my own software development process, I have to start documenting the most important scenarios and interfaces in my application as well as dependencies in legacy code that I'm reusing, and so forth. To do this, I could use a piece of paper, or maybe a shiny new tablet PC, and start drawing class and sequence diagrams with my own symbols. But if it is a serious development project, I can get help from an automated modeling tool such as Rational Rose, Rational Rose RealTime, or Rational XDE. TM Using the Unified Modeling Language (UML), I can create models that are easily understandable not just to me, but also to my colleagues and managers and the final users. I can use these models to define roles in my development team and document the application that will meet the requirements given to my group. I can also update my models from the code on a need- to-have basis.

5 So where does software modeling meet runtime analysis? Theoretically, I could imagine several intersections, but let's stay with one common problem that runtime analysis solves. Creating sequence diagrams for existing code can be tiresome. To do it effectively, you need to understand exactly how your application should execute -- and this is where runtime analysis can really help. Rational PurifyPlus for Linux and the Rational Test RealTime family of products provide unique capabilities for creating UML sequence diagrams "on the fly," using runtime analysis information collected during testing (see Figure 1). click here to enlarge Figure 1: UML Sequence Diagram Created by Rational PurifyPlus for Linux The benefits of this particular feature -- runtime tracing -- are obvious during debugging: It lets you visualize objects, method calls, and raised exceptions as you do development testing in a debugger. Writing Code: Implementation and Debugging At some point in the development lifecycle, the projected features need to be implemented into code; this code, in turn, needs to be compiled and linked into either a component that will be executed with the help of unit testing, or a debug version of the standalone application. Start with basic functionality that works, and start adding features in order to avoid functionality flaws later in the process. The same applies for performance and memory utilization problems: The earlier you detect performance and memory bottlenecks, the easier it will be to fix them and to deliver software of higher quality. If you write tests even before you implement the code, you can define verification points not just for the component's functionality, but also for its performance and memory usage. This is where runtime analysis comes into play. Since you have to test the functionality anyway, runtime analysis will provide you exact information about the root cause of the problem, based on the information collected during functionality testing.

6 All major programming languages host features that provide collections of additional information about the application's execution. Using programming language features such as assert and trace, and keywords for exception handling, can help inform you about what has happened during application execution. The system APIs for timing can also help you gain information about performance, but as a data collection vehicle they can quickly become very ineffective, and they influence the performance of the tested application too much to be reliable. In the code sample below, for example, assert will confirm or decline the assumption that you've made in the code about the result of a certain operation. FILE* p = fopen("worddoc.doc"); assert( p ); If the opening of this file fails for some reason, then the value returned by fopen( ) will be 0. If you don't assert this return value, the application could continue executing, and you might never find out whether the file opening operation actually succeeded. Note that in this example, assert is only checking your assumption about the correct functioning of a certain method. In more complicated situations you can easily either lose sight of a certain scenario or make the wrong assumption, which would result in a runtime error. The advantage of this debugging method is obvious, but there are some disadvantages as well: You can't assert every single condition in your code. That would make the code extremely slow and difficult to maintain. Numerous other errors can occur without any visible effects on the code execution; even if you combine all of the language capabilities we've mentioned, it may not be enough. Sometimes the root cause of the error occurs much earlier in the application execution, and it is difficult to trace back to the problem. As we mentioned earlier, it is also possible to measure application performance from within the code. Here is an example: time = System.currentTimeMillis(); DoSomething(); time = System.currentTimeMillis() - time; System.out.prntln("Measured time is " + time); However, this profiling method doesn't allow you to profile the whole application and still discover details about each method, not to mention specific lines of code. The collected time is also not reliable because it may be influenced by other processes running on the same machine -- user interaction and so forth. For more detailed, reliable performance profiling, you need a specialized performance profiling tool like Rational Quantify, or Rational PurifyPlus.

7 Another basic debugging tool is a debugger including Visual Studio Debugger and GNU gdb. A debugger allows you to stop the execution of an application at virtually any line of code. Debuggers can also replace the machine instruction on the line of code where you've set the breakpoint with a special instruction that will "freeze" execution of the application in the processor and allow you to examine the content of objects, variables, function stacks, and registries at that point of application execution. However, the debugger will not tell you whether you have a memory or performance problem. It will assist you in finding one if you have a hunch that it exists. A specialized runtime analysis tool such as Rational Purify or Rational PurifyPlus, on the other hand, will record every memory error -- with all the details -- as the error happens. It will put the breakpoints at the exact place where a memory violation happens, or it will allow you to examine the application internals after the run via the recorded runtime analysis data. Runtime analysis removes the guesswork from debugging! Advanced Debugging with Runtime Analysis 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. We will examine these capabilities below. Visualization of Application Execution To understand this capability, we'll look at five examples. Visualization Example 1: Runtime Tracing First, let's see how a runtime analysis tool (Rational PurifyPlus for Linux does runtime tracing) visually represents important runtime elements of the tested application. As Figure 1 shows, this capability means users can step through the code and see the interactions between objects at the same time.

8 click here to enlarge Figure 1: Runtime Tracing with Rational PurifyPlus for Linux Visualization Example 2: Code Coverage Runtime analysis with a tool such as Rational PureCoverage (included in Rational PurifyPlus) provides various views to code coverage information, one of them being Annotated Source. This particular view shows the source file of the examined application; the color of the line indicates the line's status after the executed test case: hit, missed, dead, or partially hit. As Figure 2 shows, the user can see code coverage and the execution path for this test case. click here to enlarge Figure 2: Rational PurifyPlus Display of Annotated Source for the C#.NET application in Visual Studio.NET The code fragment in Figure 2 shows the exact path the application took when

9 executing the switch statement on line 111. This particular line is marked as partially hit because line 122 hasn't been executed. Visualization Example 3: Threads A runtime analysis tool such as Rational Quantify (included in Rational PurifyPlus) provides thread visualization, which can assist in detecting multithreading problems by marking the state of each of the threads while debugging. As Figure 3 shows, this allows you to examine the status of threads visually, while debugging. click here to enlarge Figure 3: Rational Quantify Thread Analysis View in Visual Studio 6 Visualization Example 4: Call Graph Runtime analysis tools can also detect and display performance bottlenecks. The big advantage of this approach, compared to traditional methods, is that you can get an excellent overview of the execution path as well as precise information about the number of calls to the methods involved in the scenario. As Figures 4A and 4B show, the Call Graph in Rational Quantify highlights a chain of calls in the most time-consuming execution path; that is the performance hotspot. The thickness of the line connecting methods is proportional to the ratio between the time (or memory if you are using Purify) spent in this chain of calls and the rest of the application.

10 click here to enlarge Figure 4A: Rational Quantify Call Graph of a Mixed VB.NET and C#.NET Application in Visual Studio.NET click here to enlarge Figure 4B: Rational Quantify Call Graph of a C/C++ application on Solaris Visualization Example 5: Memory Usage 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 Rational 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 5).

11 click here to enlarge Figure 5: Overview of Thread Status and Memory Usage in Rational Purify for Windows Measurement of Vital Runtime Parameters. 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: Runtime performance Memory usage Code coverage Again, we will look at examples to understand this runtime analysis capability. Measurement Example 1: Function List View Function List View is a typical runtime analysis view that can be generated with a specialized Runtime analysis tool such as Rational Quantify (see Figure 6). It presents all important methods and/or objects of an application in tables that can be sorted by number of measured parameters; this allows developers analyzing code to find what methods used the most available memory at that point in time, as well as the slowest functions, the age of objects, and so forth. 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.

12 click here to enlarge Figure 6: Rational Quantify Function List View for a Visual C++ Application Measurement Example 2: Function Detail View A runtime analysis tool such as Rational 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 7). 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. click here to enlarge Figure 7: Rational Quantify Function Detail View for a Visual C#.NET Application in Visual Studio.NET (with Rational XDE) Measurement Example 3: Method Coverage Module View

13 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. You can do this with a tool such as Rational PureCoverage, which yields precise information about untested and dead code vs. tested code (Figure 8). click here to enlarge Figure 8: Rational PureCoverage Display of Code Coverage on the Method Level for a Mixed C#.NET and VB.NET Application in Visual Studio.NET (with Rational XDE) Runtime Memory Corruption Detection in User Code. This is the crowning glory of runtime analysis for native C/C++ applications. Runtime analysis can not only help to detect problems by displaying performance, memory, thread, and code coverage data in different views, but it can also pinpoint the exact location in the user code where the error is generated, or/and caused. Runtime memory corruption detection is essential to ensure proper functioning and high quality of native C and C++ applications on all platforms. Rational tools for runtime memory detection are Rational Purify and Rational PurifyPlus. Again, let's look at some examples. Error Detection Example 1: Rational Purify Memory Error and Memory Leak Reports Rational 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; Rational Purify detects errors in memory and uses debug information to trace these errors back to the responsible lines of code (see Figure 9).

14 click here to enlarge Figure 9: Rational Purify Memory Error and Memory Leak Report for a Visual C++ Application 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. This example is just one of the many ways in which runtime analysis significantly reduces debugging time for C/C++ development. Error Detection Example 2: Quantify Annotated Source Rational 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 10).

15 click here to enlarge Figure 10: Rational Quantify Annotated Source for a Mixed Visual Basic 6 and Visual C++ Application in Visual Studio 6 Error Detection Example 3: Purify Object and Reference Graph 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). The net effect of such errors is the same as the effect of C/C++ leaks: The memory becomes unavailable for this and all other processes running on the host operating system. By doing a runtime analysis with Rational Purify, however, you can pinpoint the exact line of code where the reference to the object in question has been created (Figure 11). click here to enlarge Figure 11: Rational Purify Object and Reference Graph for a Java Application Documentation of Runtime Behavior. 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

16 quality. When you use runtime analysis data together with source control tools such as Rational ClearCase, you can easily detect which changes to the source code database are responsible for a faulty build and/or failure of automated tests; you will know which portions of the source code base were changed between the successful set of tests and the set of tests that failed. Not only that: You can identify the owner of those code changes and the exact times and dates they were introduced. Advanced runtime analysis tools such as Rational 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 13. click here to enlarge Figure 13: Rational Quantify Compare Runs Report In Figure 13, Rational 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 14 shows an example of a performance profile imported into Microsoft Excel.

17 click here to enlarge Figure 14: Rational Quantify Performance Report Imported into 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. Runtime Analysis: The Emphasis Is on Quality Runtime analysis expands standard software development activities along one key dimension: concern for quality. It paves the way for achieving higher software quality through better understanding of the internal workings of an application under development. Remember: Source code that compiles is not proof of quality; detailed, reliable, and precise runtime performance, memory utilization, and thread and code coverage analysis data are the only way to determine that an application is free of serious errors and will perform efficiently. References Rational PurifyPlus documentation Rational requirements and analysis documentation Rational visual modeling and development documentation

18 Rational automated testing documentation Articles in The Rational Edge: "Memory Profiling in Java" (January 2001) "Monitoring Object Creation in Java Application Profiling with Rational PurifyPlus" (June 2001) "Runtime Analysis in Visual Studio.NET" (March 2002) t_runtimeanalysis_gb.jsp "Runtime Debugging with Microsoft Visual Studio and Rational Purify" (April and May 2001) "Power C/C++ Debugging: Using Rational Purify with GDB" t_powerdebugging_gb.html For more information on the products or services discussed in this article, please click here and follow the instructions provided. Thank you! Copyright Rational Software 2002 Privacy/Legal Information

Introducing the PurifyPlus Family: PurifyPlus for Windows PurifyPlus for UNIX PurifyPlus for Linux PurifyPlus RealTime

Introducing the PurifyPlus Family: PurifyPlus for Windows PurifyPlus for UNIX PurifyPlus for Linux PurifyPlus RealTime Introducing the PurifyPlus Family: PurifyPlus for PurifyPlus for UNIX Product version 2002 Release 2 Document version 1.5 Last revision: November 29, 2002 1 High level overview: A. Intro an introduction

More information

Systems software design. Software build configurations; Debugging, profiling & Quality Assurance tools

Systems software design. Software build configurations; Debugging, profiling & Quality Assurance tools Systems software design Software build configurations; Debugging, profiling & Quality Assurance tools Who are we? Krzysztof Kąkol Software Developer Jarosław Świniarski Software Developer Presentation

More information

Rational PurifyPlus Rational Purify Rational PureCoverage Rational Quantify

Rational PurifyPlus Rational Purify Rational PureCoverage Rational Quantify Rational Software Corporation Rational PurifyPlus Rational Purify Rational PureCoverage Rational Quantify Getting Started VERSION: 2002.05.20 PART NUMBER: 800-025734-000 WINDOWS support@rational.com http://www.rational.com

More information

Project Plan. In this section the various tools used at different phases of the software life cycle will be described. 3.

Project Plan. In this section the various tools used at different phases of the software life cycle will be described. 3. Project Plan Subject: Project Plan Issue 1.0 Date: 09 June 2005 From: Daniel Calder Mark Marwil 1. Project Goal The project being developed is a library tool. Using various software tools that comply with

More information

Oracle Developer Studio Code Analyzer

Oracle Developer Studio Code Analyzer Oracle Developer Studio Code Analyzer The Oracle Developer Studio Code Analyzer ensures application reliability and security by detecting application vulnerabilities, including memory leaks and memory

More information

Promoting Component Architectures in a Dysfunctional Organization

Promoting Component Architectures in a Dysfunctional Organization Promoting Component Architectures in a Dysfunctional Organization by Raj Kesarapalli Product Manager Rational Software When I first began my career as a software developer, I didn't quite understand what

More information

Deliver robust products at reduced cost by linking model-driven software testing to quality management.

Deliver robust products at reduced cost by linking model-driven software testing to quality management. Quality management White paper September 2009 Deliver robust products at reduced cost by linking model-driven software testing to quality management. Page 2 Contents 2 Closing the productivity gap between

More information

Visual Studio 2008 Load Symbols Manually

Visual Studio 2008 Load Symbols Manually Visual Studio 2008 Load Symbols Manually Microsoft Visual Studio 2008 SP1 connects to the Microsoft public symbol are loaded manually if you want to load symbols automatically when you launch. Have you

More information

Debugging. CSE 2231 Supplement A Annatala Wolf

Debugging. CSE 2231 Supplement A Annatala Wolf Debugging CSE 2231 Supplement A Annatala Wolf Testing is not debugging! The purpose of testing is to detect the existence of errors, not to identify precisely where the errors came from. Error messages

More information

Designing and debugging real-time distributed systems

Designing and debugging real-time distributed systems Designing and debugging real-time distributed systems By Geoff Revill, RTI This article identifies the issues of real-time distributed system development and discusses how development platforms and tools

More information

Welcome to this IBM Rational podcast, enhanced. development and delivery efficiency by improving initial

Welcome to this IBM Rational podcast, enhanced. development and delivery efficiency by improving initial IBM Podcast [ MUSIC ] GIST: Welcome to this IBM Rational podcast, enhanced development and delivery efficiency by improving initial core quality. I'm Kimberly Gist with IBM. Catching defects earlier in

More information

J2EE Application Development : Conversion and Beyond Osmond Ng

J2EE Application Development : Conversion and Beyond Osmond Ng IBM Software Group J2EE Application Development : Conversion and Beyond Osmond Ng IBM Software Group Practitioner View Point IBM Rational Application Developer J2EE/EJB Tooling J2EE construction tools

More information

Intel Parallel Studio 2011

Intel Parallel Studio 2011 THE ULTIMATE ALL-IN-ONE PERFORMANCE TOOLKIT Studio 2011 Product Brief Studio 2011 Accelerate Development of Reliable, High-Performance Serial and Threaded Applications for Multicore Studio 2011 is a comprehensive

More information

Building a New Rational Web Site with Rational Suite

Building a New Rational Web Site with Rational Suite Building a New Rational Web Site with Rational Suite by Christina Howe Director of Internet Services Rational Software In April of last year, Rational Software determined that its Web site no longer measured

More information

Discover, Relate, Model, and Integrate Data Assets with Rational Data Architect

Discover, Relate, Model, and Integrate Data Assets with Rational Data Architect Discover, Relate, Model, and Integrate Data Assets with Rational Data Architect Niels C. Jacobsen (nielsj@dk.ibm.com) Associate IT Architect, IBM Software Group Rational IBM Software Group 2005 IBM Corporation

More information

Oracle Developer Studio 12.6

Oracle Developer Studio 12.6 Oracle Developer Studio 12.6 Oracle Developer Studio is the #1 development environment for building C, C++, Fortran and Java applications for Oracle Solaris and Linux operating systems running on premises

More information

IBM Rational Rose XDE Developer

IBM Rational Rose XDE Developer Extend Your Development Experience Developer Highlights Model-driven development Assisted modeling with UML support Multiple model support for Roundtrip engineering Java, Model-Driven Architecture C++,

More information

International Journal of Computer Engineering and Applications, Volume XII, Special Issue, April- ICITDA 18,

International Journal of Computer Engineering and Applications, Volume XII, Special Issue, April- ICITDA 18, International Journal of Computer Engineering and Applications, Volume XII, Special Issue, April- ICITDA 18, www.ijcea.com ISSN 2321-3469 SOFTWARE TESTING Rajat Galav, Shivank Lavania Student, Department

More information

International Journal of Computer Engineering and Applications, Volume XII, Special Issue, September 18, ISSN SOFTWARE TESTING

International Journal of Computer Engineering and Applications, Volume XII, Special Issue, September 18,   ISSN SOFTWARE TESTING International Journal of Computer Engineering and Applications, Volume XII, Special Issue, September 18, www.ijcea.com ISSN 2321-3469 SOFTWARE TESTING Rajat Galav 1, Shivank Lavania 2, Brijesh Kumar Singh

More information

MITOCW watch?v=9h6muyzjms0

MITOCW watch?v=9h6muyzjms0 MITOCW watch?v=9h6muyzjms0 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To

More information

Software Testing and Maintenance

Software Testing and Maintenance Software Testing and Maintenance Testing Strategies Black Box Testing, also known as Behavioral Testing, is a software testing method in which the internal structure/ design/ implementation of the item

More information

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018

News in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018 News in RSA-RTE 10.2 updated for sprint 2018.18 Mattias Mohlin, May 2018 Overview Now based on Eclipse Oxygen.3 (4.7.3) Contains everything from RSARTE 10.1 and also additional features and bug fixes See

More information

Debugging Runtime Scripts in Operations Manager and Essentials 2007 The third installment in the System Center Forum Scripting Series

Debugging Runtime Scripts in Operations Manager and Essentials 2007 The third installment in the System Center Forum Scripting Series Debugging Runtime Scripts in Operations Manager and Essentials 2007 The third installment in the System Center Forum Scripting Series Author: Neale Brown, MCSE (Messaging) Contributor, System Center Forum

More information

Enhanced Debugging with Traces

Enhanced Debugging with Traces Enhanced Debugging with Traces An essential technique used in emulator development is a useful addition to any programmer s toolbox. Peter Phillips Creating an emulator to run old programs is a difficult

More information

.Net and Rational s XDE from the trenches Tony Grout FMI Solutions

.Net and Rational s XDE from the trenches Tony Grout FMI Solutions .Net and Rational s XDE from the trenches.net and Rational s XDE from the trenches Tony Grout FMI Tony Solutions Grout FMI Solutions Agenda! Who are FMI Solutions?! Setting the Scene! Getting the Project

More information

Enterprise Architect. User Guide Series. Profiling

Enterprise Architect. User Guide Series. Profiling Enterprise Architect User Guide Series Profiling Investigating application performance? The Sparx Systems Enterprise Architect Profiler finds the actions and their functions that are consuming the application,

More information

Enterprise Architect. User Guide Series. Profiling. Author: Sparx Systems. Date: 10/05/2018. Version: 1.0 CREATED WITH

Enterprise Architect. User Guide Series. Profiling. Author: Sparx Systems. Date: 10/05/2018. Version: 1.0 CREATED WITH Enterprise Architect User Guide Series Profiling Author: Sparx Systems Date: 10/05/2018 Version: 1.0 CREATED WITH Table of Contents Profiling 3 System Requirements 8 Getting Started 9 Call Graph 11 Stack

More information

Memory Analysis tools

Memory Analysis tools Memory Analysis tools PURIFY The Necessity TOOL Application behaviour: Crashes intermittently Uses too much memory Runs too slowly Isn t well tested Is about to ship You need something See what your code

More information

Testing. ECE/CS 5780/6780: Embedded System Design. Why is testing so hard? Why do testing?

Testing. ECE/CS 5780/6780: Embedded System Design. Why is testing so hard? Why do testing? Testing ECE/CS 5780/6780: Embedded System Design Scott R. Little Lecture 24: Introduction to Software Testing and Verification What is software testing? Running a program in order to find bugs (faults,

More information

Benefits of object-orientationorientation

Benefits of object-orientationorientation ITEC 136 Business Programming Concepts Week 14, Part 01 Overview 1 Week 14 Overview Week 13 review What is an object? (three parts) State (properties) Identity (location in memory) Behavior (methods) 2

More information

Quickly Pinpoint and Resolve Problems in Windows /.NET Applications TECHNICAL WHITE PAPER

Quickly Pinpoint and Resolve Problems in Windows /.NET Applications TECHNICAL WHITE PAPER Quickly Pinpoint and Resolve Problems in Windows /.NET Applications TECHNICAL WHITE PAPER Table of Contents Executive Overview...1 Problem Resolution A Major Time Consumer...2 > Inefficiencies of the Problem

More information

J2EE Development Best Practices: Improving Code Quality

J2EE Development Best Practices: Improving Code Quality Session id: 40232 J2EE Development Best Practices: Improving Code Quality Stuart Malkin Senior Product Manager Oracle Corporation Agenda Why analyze and optimize code? Static Analysis Dynamic Analysis

More information

9 th CA 2E/CA Plex Worldwide Developer Conference 1

9 th CA 2E/CA Plex Worldwide Developer Conference 1 1 Introduction/Welcome Message Organizations that are making major changes to or replatforming an application need to dedicate considerable resources ot the QA effort. In this session we will show best

More information

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered.

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered. Testing Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered. System stability is the system going to crash or not?

More information

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Performance, memory

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Performance, memory SCRIPTING Overview Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Reflection Bindings Serialization Performance, memory Rationale C++ isn't the best choice

More information

Terminology. There are many different types of errors and different ways how we can deal with them.

Terminology. There are many different types of errors and different ways how we can deal with them. Testing Terminology Reliability: The measure of success with which the observed behavior of a system confirms to some specification of its behavior. Failure: Any deviation of the observed behavior from

More information

Eliminate Memory Errors to Improve Program Stability

Eliminate Memory Errors to Improve Program Stability Introduction INTEL PARALLEL STUDIO XE EVALUATION GUIDE This guide will illustrate how Intel Parallel Studio XE memory checking capabilities can find crucial memory defects early in the development cycle.

More information

Rapid Bottleneck Identification A Better Way to do Load Testing. An Oracle White Paper June 2008

Rapid Bottleneck Identification A Better Way to do Load Testing. An Oracle White Paper June 2008 Rapid Bottleneck Identification A Better Way to do Load Testing An Oracle White Paper June 2008 Rapid Bottleneck Identification A Better Way to do Load Testing. RBI combines a comprehensive understanding

More information

Oliopäivät Modelling Now and in the Future, with Acronyms or without = RSA

Oliopäivät Modelling Now and in the Future, with Acronyms or without = RSA IBM Software Group Oliopäivät 28-29.11.2006 Modelling Now and in the Future, with Acronyms or without = RSA rami.talme@fi.ibm.com 2006 IBM Corporation IBM Software Group Rational software The business-driven

More information

WHY THE WORLD S LEADING.NET DEVELOPMENT TEAMS RELY ON CODE COVERAGE AND WHAT IT MEANS TO YOUR TEAM CODE COVERAGE FOR THE TEAM

WHY THE WORLD S LEADING.NET DEVELOPMENT TEAMS RELY ON CODE COVERAGE AND WHAT IT MEANS TO YOUR TEAM CODE COVERAGE FOR THE TEAM CODE COAGE FOR THE WHY THE WORLD S LEADING.NET S RELY ON CODE COAGE AND WHAT IT MEANS TO YOUR MISSION CRITICAL.NET CODE Quality code is a team effort Throughout the planning, development and testing process,

More information

ADT: Eclipse development tools for ATL

ADT: Eclipse development tools for ATL ADT: Eclipse development tools for ATL Freddy Allilaire (freddy.allilaire@laposte.net) Tarik Idrissi (tarik.idrissi@laposte.net) Université de Nantes Faculté de Sciences et Techniques LINA (Laboratoire

More information

Eliminate Threading Errors to Improve Program Stability

Eliminate Threading Errors to Improve Program Stability Introduction This guide will illustrate how the thread checking capabilities in Intel Parallel Studio XE can be used to find crucial threading defects early in the development cycle. It provides detailed

More information

Enabling Performance & Stress Test throughout the Application Lifecycle

Enabling Performance & Stress Test throughout the Application Lifecycle Enabling Performance & Stress Test throughout the Application Lifecycle March 2010 Poor application performance costs companies millions of dollars and their reputation every year. The simple challenge

More information

Optimizing Emulator Utilization by Russ Klein, Program Director, Mentor Graphics

Optimizing Emulator Utilization by Russ Klein, Program Director, Mentor Graphics Optimizing Emulator Utilization by Russ Klein, Program Director, Mentor Graphics INTRODUCTION Emulators, like Mentor Graphics Veloce, are able to run designs in RTL orders of magnitude faster than logic

More information

csc444h: so(ware engineering I matt medland

csc444h: so(ware engineering I matt medland csc444h: so(ware engineering I matt medland matt@cs.utoronto.ca http://www.cs.utoronto.ca/~matt/csc444 tes2ng top- 10 infrastructure source code control including other types of testing reproducible builds

More information

IBM Rational Rose Technical Developer

IBM Rational Rose Technical Developer Accelerating Complex Software Systems Development IBM Rational Rose Technical Developer Highlights Model-Driven Development Ensures meeting stringent with the Unified Modeling requirements for latency,

More information

Testing. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus

Testing. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus Testing Prof. Clarkson Fall 2017 Today s music: Wrecking Ball by Miley Cyrus Review Previously in 3110: Modules Specification (functions, modules) Today: Validation Testing Black box Glass box Randomized

More information

CS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11

CS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11 CS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11 CS 536 Spring 2015 1 Handling Overloaded Declarations Two approaches are popular: 1. Create a single symbol table

More information

Chapter 9. Software Testing

Chapter 9. Software Testing Chapter 9. Software Testing Table of Contents Objectives... 1 Introduction to software testing... 1 The testers... 2 The developers... 2 An independent testing team... 2 The customer... 2 Principles of

More information

Chapter 15 Debugging

Chapter 15 Debugging Chapter 15 Debugging Known, but unfixed errors Just ignore errors at this point. There is nothing we can do except to try to keep going. -A comment in XFS (xfs_vnodeops.c, line 1785) Error, skip block

More information

12. Debugging. Overview. COMP1917: Computing 1. Developing Programs. The Programming Cycle. Programming cycle. Do-it-yourself debugging

12. Debugging. Overview. COMP1917: Computing 1. Developing Programs. The Programming Cycle. Programming cycle. Do-it-yourself debugging COMP1917 12s2 Debugging 1 COMP1917: Computing 1 12. Debugging Overview Programming cycle Do-it-yourself debugging Debugging withgdb Nastier bugs Memory leaks COMP1917 12s2 Debugging 2 Developing Programs

More information

Web Applications (Part 2) The Hackers New Target

Web Applications (Part 2) The Hackers New Target Web Applications (Part 2) The Hackers New Target AppScan Source Edition Terence Chow Advisory Technical Consultant An IBM Rational IBM Software Proof of Technology Hacking 102: Integrating Web Application

More information

New IDE Application Profiler Enhancements

New IDE Application Profiler Enhancements New IDE Application Profiler Enhancements Authored by: Elena Laskavaia The new Application Profiler features are currently under development for the next release of QNX Momentics. Use the forum and provide

More information

1: Introduction to Object (1)

1: Introduction to Object (1) 1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface

More information

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Scripting 1 Overview Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Rationale C++ isn't the best choice for all problems Complicated feature set, syntax Low-level,

More information

Introduction to Mobile Development

Introduction to Mobile Development Introduction to Mobile Development Building mobile applications can be as easy as opening up the IDE, throwing something together, doing a quick bit of testing, and submitting to an App Store all done

More information

An Introduction to Tilde

An Introduction to Tilde An Introduction to Tilde Presentation on a FOSS tool for Lua development By Andrew Bailey, CTO, Tantalus & Allen Weeks, Lead Programmer, Tantalus. mailto:andrew@tantalus.com.au mailto:aweeks@tantalus.com.au

More information

International Journal of Current Research and Modern Education (IJCRME) ISSN (Online): ( Volume I, Issue II, 2016

International Journal of Current Research and Modern Education (IJCRME) ISSN (Online): (  Volume I, Issue II, 2016 A CASE STUDY OF IMPLEMENTING A GDB INTERFACE BETWEEN AN ARM BASED IC SIMULATOR AND GNU DEBUGGER H. S. Sachin Kumar* & Trisila Devi Nagavi** Department of Computer Science & Engineering, Sri Jaya Chamarajendra

More information

DEBUGGING ON FERMI PREPARING A DEBUGGABLE APPLICATION GDB. GDB on front-end nodes

DEBUGGING ON FERMI PREPARING A DEBUGGABLE APPLICATION GDB. GDB on front-end nodes DEBUGGING ON FERMI Debugging your application on a system based on a BG/Q architecture like FERMI could be an hard task due to the following problems: the core files generated by a crashing job on FERMI

More information

TESTING AND DEBUGGING

TESTING AND DEBUGGING TESTING AND DEBUGGING zombie[1] zombie[3] Buuuuugs zombie[4] zombie[2] zombie[5] zombie[0] Fundamentals of Computer Science I Outline Debugging Types of Errors Syntax Errors Semantic Errors Logic Errors

More information

Windows Script Host Fundamentals

Windows Script Host Fundamentals O N E Windows Script Host Fundamentals 1 The Windows Script Host, or WSH for short, is one of the most powerful and useful parts of the Windows operating system. Strangely enough, it is also one of least

More information

Exploring Performance Tradeoffs in a Sudoku SAT Solver CS242 Project Report

Exploring Performance Tradeoffs in a Sudoku SAT Solver CS242 Project Report Exploring Performance Tradeoffs in a Sudoku SAT Solver CS242 Project Report Hana Lee (leehana@stanford.edu) December 15, 2017 1 Summary I implemented a SAT solver capable of solving Sudoku puzzles using

More information

Using Intel VTune Amplifier XE and Inspector XE in.net environment

Using Intel VTune Amplifier XE and Inspector XE in.net environment Using Intel VTune Amplifier XE and Inspector XE in.net environment Levent Akyil Technical Computing, Analyzers and Runtime Software and Services group 1 Refresher - Intel VTune Amplifier XE Intel Inspector

More information

Software Testing Strategies. Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only

Software Testing Strategies. Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only Chapter 22 Software Testing Strategies Slide Set to accompany Software Engineering: A Practitioner s Approach, 8/e by Roger S. Pressman and Bruce R. Maxim Slides copyright 1996, 2001, 2005, 2009, 2014

More information

Are you covered? New tooling for Quality Assurance

Are you covered? New tooling for Quality Assurance Are you covered? New tooling for Quality Assurance Edmund Reinhardt IBM i Application Development Tooling Edmund.Reinhardt@ca.ibm.com TUG TEC Agenda Key: 23C Agenda What is code coverage Code Coverage

More information

Brochure. Security. Fortify on Demand Dynamic Application Security Testing

Brochure. Security. Fortify on Demand Dynamic Application Security Testing Brochure Security Fortify on Demand Dynamic Application Security Testing Brochure Fortify on Demand Application Security as a Service Dynamic Application Security Testing Fortify on Demand delivers application

More information

Sample Exam. Advanced Test Automation - Engineer

Sample Exam. Advanced Test Automation - Engineer Sample Exam Advanced Test Automation - Engineer Questions ASTQB Created - 2018 American Software Testing Qualifications Board Copyright Notice This document may be copied in its entirety, or extracts made,

More information

Computer Science II Lab 3 Testing and Debugging

Computer Science II Lab 3 Testing and Debugging Computer Science II Lab 3 Testing and Debugging Introduction Testing and debugging are important steps in programming. Loosely, you can think of testing as verifying that your program works and debugging

More information

Debugging with gdb and valgrind

Debugging with gdb and valgrind Debugging with gdb and valgrind Dr. Axel Kohlmeyer Associate Dean for Scientific Computing, CST Associate Director, Institute for Computational Science Assistant Vice President for High-Performance Computing

More information

A Technical Overview: Voiyager Dynamic Application Discovery

A Technical Overview: Voiyager Dynamic Application Discovery A Technical Overview: Voiyager Dynamic Application Discovery A brief look at the Voiyager architecture and how it provides the most comprehensive VoiceXML application testing and validation method available.

More information

Seminar report Java Submitted in partial fulfillment of the requirement for the award of degree Of CSE

Seminar report Java Submitted in partial fulfillment of the requirement for the award of degree Of CSE A Seminar report On Java Submitted in partial fulfillment of the requirement for the award of degree Of CSE SUBMITTED TO: www.studymafia.org SUBMITTED BY: www.studymafia.org 1 Acknowledgement I would like

More information

CYSE 411/AIT 681 Secure Software Engineering. Topic #6. Seven Software Security Touchpoints (III) Instructor: Dr. Kun Sun

CYSE 411/AIT 681 Secure Software Engineering. Topic #6. Seven Software Security Touchpoints (III) Instructor: Dr. Kun Sun CYSE 411/AIT 681 Secure Software Engineering Topic #6. Seven Software Security Touchpoints (III) Instructor: Dr. Kun Sun Reading This lecture [McGraw]: Ch. 7-9 2 Seven Touchpoints 1. Code review 2. Architectural

More information

JUnit Test Patterns in Rational XDE

JUnit Test Patterns in Rational XDE Copyright Rational Software 2002 http://www.therationaledge.com/content/oct_02/t_junittestpatternsxde_fh.jsp JUnit Test Patterns in Rational XDE by Frank Hagenson Independent Consultant Northern Ireland

More information

Here's how you declare a function that returns a pointer to a character:

Here's how you declare a function that returns a pointer to a character: 23 of 40 3/28/2013 10:35 PM Violets are blue Roses are red C has been around, But it is new to you! ANALYSIS: Lines 32 and 33 in main() prompt the user for the desired sort order. The value entered is

More information

4. Risk-Based Security Testing. Reading. CYSE 411/AIT 681 Secure Software Engineering. Seven Touchpoints. Application of Touchpoints

4. Risk-Based Security Testing. Reading. CYSE 411/AIT 681 Secure Software Engineering. Seven Touchpoints. Application of Touchpoints Reading This lecture [McGraw]: Ch. 7-9 CYSE 411/AIT 681 Secure Software Engineering Topic #6. Seven Software Security Touchpoints (III) Instructor: Dr. Kun Sun 2 Seven Touchpoints Application of Touchpoints

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

More information

Introduction to Problem Solving and Programming in Python.

Introduction to Problem Solving and Programming in Python. Introduction to Problem Solving and Programming in Python http://cis-linux1.temple.edu/~tuf80213/courses/temple/cis1051/ Overview Types of errors Testing methods Debugging in Python 2 Errors An error in

More information

Laboratory Assignment #4 Debugging in Eclipse CDT 1

Laboratory Assignment #4 Debugging in Eclipse CDT 1 Lab 4 (10 points) November 20, 2013 CS-2301, System Programming for Non-majors, B-term 2013 Objective Laboratory Assignment #4 Debugging in Eclipse CDT 1 Due: at 11:59 pm on the day of your lab session

More information

Boot Camp. Dave Eckhardt Bruce Maggs

Boot Camp. Dave Eckhardt Bruce Maggs Boot Camp Dave Eckhardt de0u@andrew.cmu.edu Bruce Maggs bmm@cs.cmu.edu 1 This Is a Hard Class Traditional hazards 410 letter grade one lower than other classes All other classes this semester: one grade

More information

AHHHHHHH!!!! NOT TESTING! Anything but testing! Beat me, whip me, send me to Detroit, but don t make me write tests!

AHHHHHHH!!!! NOT TESTING! Anything but testing! Beat me, whip me, send me to Detroit, but don t make me write tests! NAME DESCRIPTION Test::Tutorial - A tutorial about writing really basic tests AHHHHHHH!!!! NOT TESTING! Anything but testing! Beat me, whip me, send me to Detroit, but don t make me write tests! *sob*

More information

1 Getting used to Python

1 Getting used to Python 1 Getting used to Python We assume you know how to program in some language, but are new to Python. We'll use Java as an informal running comparative example. Here are what we think are the most important

More information

Using a Profiler Efficiently

Using a Profiler Efficiently Using a Profiler Efficiently Strategies that Help you to Find Performance Problems and Memory Leaks Tim Wellhausen kontakt@tim-wellhausen.de http://www.tim-wellhausen.de May 24, 2009 Proceedings of the

More information

HOW TO TURN A GREAT APP INTO A KILLER APP Trade secrets from Red Gate Software

HOW TO TURN A GREAT APP INTO A KILLER APP Trade secrets from Red Gate Software HOW TO TURN A GREAT APP INTO A KILLER APP Trade secrets from Red Gate Software By Red Gate Software Introduction Developing a.net application is a bit like running the gauntlet. You spend months solving

More information

Vb Net Tutorial For Beginners Visual Studio 2010 Express Windows Service Template

Vb Net Tutorial For Beginners Visual Studio 2010 Express Windows Service Template Vb Net Tutorial For Beginners Visual Studio 2010 Express Windows Service Template Visual Studio Express for Windows Desktop also offers that template, but Visual about how to use Visual Studio Express

More information

CS354 gdb Tutorial Written by Chris Feilbach

CS354 gdb Tutorial Written by Chris Feilbach CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that

More information

Testing! Prof. Leon Osterweil! CS 520/620! Spring 2013!

Testing! Prof. Leon Osterweil! CS 520/620! Spring 2013! Testing Prof. Leon Osterweil CS 520/620 Spring 2013 Relations and Analysis A software product consists of A collection of (types of) artifacts Related to each other by myriad Relations The relations are

More information

Intro to Segmentation Fault Handling in Linux. By Khanh Ngo-Duy

Intro to Segmentation Fault Handling in Linux. By Khanh Ngo-Duy Intro to Segmentation Fault Handling in Linux By Khanh Ngo-Duy Khanhnd@elarion.com Seminar What is Segmentation Fault (Segfault) Examples and Screenshots Tips to get Segfault information What is Segmentation

More information

Lecture 15 Software Testing

Lecture 15 Software Testing Lecture 15 Software Testing Includes slides from the companion website for Sommerville, Software Engineering, 10/e. Pearson Higher Education, 2016. All rights reserved. Used with permission. Topics covered

More information

Welcome to this IBM podcast, Realizing More. Value from Your IMS Compiler Upgrade. I'm Kimberly Gist

Welcome to this IBM podcast, Realizing More. Value from Your IMS Compiler Upgrade. I'm Kimberly Gist IBM Podcast [ MUSIC ] Welcome to this IBM podcast, Realizing More Value from Your IMS Compiler Upgrade. I'm Kimberly Gist with IBM. System z compilers continue to deliver the latest programming interfaces

More information

Learning Objectives. A Meta Comment. Exercise 1. Contents. From CS61Wiki

Learning Objectives. A Meta Comment. Exercise 1. Contents. From CS61Wiki From CS61Wiki Contents 1 Learning Objectives 2 A Meta Comment 3 Exercise 1 3.1 Questions 3.2 Running code and using GDB 3.3 Compiler Optimizations 3.4 hexdump: a handy function 3.4.1 Questions 3.5 Checkpoint

More information

Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides

Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides for both problems first, and let you guys code them

More information

Inside Windows Debugging (Developer Reference) PDF

Inside Windows Debugging (Developer Reference) PDF Inside Windows Debugging (Developer Reference) PDF Use Windows debuggers throughout the development cycleâ and build better software Rethink your use of Windows debugging and tracing toolsâ and learn how

More information

CSCI0330 Intro Computer Systems Doeppner. Lab 02 - Tools Lab. Due: Sunday, September 23, 2018 at 6:00 PM. 1 Introduction 0.

CSCI0330 Intro Computer Systems Doeppner. Lab 02 - Tools Lab. Due: Sunday, September 23, 2018 at 6:00 PM. 1 Introduction 0. CSCI0330 Intro Computer Systems Doeppner Lab 02 - Tools Lab Due: Sunday, September 23, 2018 at 6:00 PM 1 Introduction 0 2 Assignment 0 3 gdb 1 3.1 Setting a Breakpoint 2 3.2 Setting a Watchpoint on Local

More information

Introduction to IBM Rational Functional Tester 6.1 Mike Kelly

Introduction to IBM Rational Functional Tester 6.1 Mike Kelly Introduction to IBM Rational Functional Tester 6.1 Mike Kelly (Mike@MichaelDKelly.com) First published on IBM developerworks: http://www-130.ibm.com/developerworks/ IBM Rational Functional Tester is an

More information

Using Static Code Analysis to Find Bugs Before They Become Failures

Using Static Code Analysis to Find Bugs Before They Become Failures Using Static Code Analysis to Find Bugs Before They Become Failures Presented by Brian Walker Senior Software Engineer, Video Product Line, Tektronix, Inc. Pacific Northwest Software Quality Conference,

More information

Eliminate Threading Errors to Improve Program Stability

Eliminate Threading Errors to Improve Program Stability Eliminate Threading Errors to Improve Program Stability This guide will illustrate how the thread checking capabilities in Parallel Studio can be used to find crucial threading defects early in the development

More information

Chapter 14 Testing Tactics

Chapter 14 Testing Tactics Chapter 14 Testing Tactics Moonzoo Kim CS Division of EECS Dept. KAIST moonzoo@cs.kaist.ac.kr http://pswlab.kaist.ac.kr/courses/cs550-07 Spring 2007 1 Overview of Ch14. Testing Tactics 14.1 Software Testing

More information

Second assignment came out Monday evening. Find defects in Hnefetafl rules written by your classmates. Topic: Code Inspection and Testing

Second assignment came out Monday evening. Find defects in Hnefetafl rules written by your classmates. Topic: Code Inspection and Testing Announcements Second assignment came out Monday evening Topic: Code Inspection and Testing Find defects in Hnefetafl rules written by your classmates Compare inspection, coverage testing, random testing,

More information

Finding and Fixing Bugs

Finding and Fixing Bugs C Finding and Fixing Bugs C.1 Introduction As you will quickly find the BUG is the pain of all programmers existence. This section looks at the most common types of BUGS and some of the strategies for

More information

Heap Management. Heap Allocation

Heap Management. Heap Allocation Heap Management Heap Allocation A very flexible storage allocation mechanism is heap allocation. Any number of data objects can be allocated and freed in a memory pool, called a heap. Heap allocation is

More information