Debugging Multi-threaded Applications in Windows
|
|
|
- Tobias Lyons
- 10 years ago
- Views:
Transcription
1 Debugging Multi-threaded Applications in Windows Abstract One of the most complex aspects of software development is the process of debugging. This process becomes especially challenging with the increased technicality of applications with multiple threads of execution. Different operating systems require different development environments as well as a different set of skills and tools to create a functional application. Microsoft Visual Studio, the primary integrated development environment for Windows programmers, simplifies and streamlines the debugging procedure. It allows developers to observe all current threads in the system, both to gain specific information and to manipulate threads to pinpoint where errors occur. This article explores the features that Microsoft Visual Studio has and its methods for debugging, including concrete examples demonstrating the setup of thread management and the execution of debugging procedures. Introduction This article presents the basic features of Microsoft Visual Studio. It will explain the features and how to utilize Visual Studio to create a functional, bug-free application. Visual Studio s language services allow the debugger to support (to varying degrees) almost any programming language. Built-in languages include C/C++, VB.NET, C#, and F#. Support for other languages such as M, Python, and Ruby is available via separately installed language services. By the end of this article, a developer should have a number of new techniques to apply to their own work immediately and the foundation necessary for approaching more advanced multi-threaded debugging projects. Debugging Multi-threaded Applications in Windows Most Windows programmers use Microsoft Visual Studio as their primary integrated development environment (IDE). As part of the IDE, Microsoft includes a debugger with multi-threaded debug support. This section examines the different multi-threaded debug capabilities of Visual Studio, and then demonstrates how they are used. Threads Window As part of the debugger, Visual Studio provides a Threads window that lists all of the current threads in the system. From this window, you can: Freeze (suspend) or thaw (resume) a thread. This is useful when you want to observe the behavior of your application without a certain thread running. Switch the current active thread. This allows you to manually perform a context switch and make another thread active in the application.
2 Examine thread state. When you double-click an entry in the Threads window, the source window jumps to the source line that the thread is currently executing. This tells you the thread s current program counter. You will be able to examine the state of local variables within the thread. The Threads window acts as the command center for examining and controlling the different threads in an application. Tracepoints As previously discussed, determining the sequence of events that lead to a race condition or deadlock situation is critical in determining the root cause of any multi-thread related bug. In order to facilitate the logging of events, Microsoft has implemented tracepoints as part of the debugger for Visual Studio Most developers are familiar with the concept of a breakpoint. A tracepoint is similar to a breakpoint except that instead of stopping program execution when the applications program counter reaches that point, the debugger takes some other action. This action can be printing a message or running a Visual Studio macro. Enabling tracepoints can be done in one of two ways. To create a new tracepoint, set the cursor to the source line of code and select Insert Tracepoint. If you want to convert an existing breakpoint to a tracepoint, simply select the breakpoint and pick the When Hit option from the Breakpoint submenu. At this point, the tracepoint dialog appears. When a tracepoint is hit, one of two actions is taken based on the information specified by the user. The simplest action is to print a message. The programmer may customize the message based on a set of predefined keywords. These keywords, along with a synopsis of what gets printed, are shown in Table 1.1. All values are taken at the time the tracepoint is hit. Table 1.1 Tracepoint Keywords KEYWORD $ADDRESS $CALLER $CALLSTACK $FUNCTION $PID $PNAME $TID $TNAME EVALUATES TO The address of the instruction The name of the function that called this function The state of the callstack The name of the current function The ID of the process The name of the process The ID of the thread The name of the thread
3 In addition to the predefined values in Table 1.1, tracepoints also give you the ability to evaluate expressions inside the message. In order to do this, simply enclose the variable or expression in curly braces. For example, assume your thread has a local variable threadlocalvar that you d like to have displayed when a tracepoint is hit. The expression you d use might look something like this: Thread: $TNAME local variables value is {threadlocalvar}. Breakpoint Filters Breakpoint filters allow developers to trigger breakpoints only when certain conditions are triggered. Breakpoints may be filtered by machine name, process, and thread. The list of different breakpoint filters is shown in Table 1.2. Table 1.2 Breakpoint Filter Options FILTER MachineName ProcessId ProcessName ThreadId ThreadName DESCRIPTION Specifies that the breakpoint should only be triggered on certain machines Limit breakpoint to process with the matching ID Limit breakpoint to process with matching name Limit breakpoint to thread with matching ID Limit breakpoint to thread with matching name Breakpoint filters can be combined to form compound statements. Three logic operators are supported:!(not), &(AND), and (OR). Naming Threads When debugging a multi-threaded application, it is often useful to assign unique names to the threads that are used in the application. In Chapter 5 of Multi-Core Programming, you read that assigning a name to a thread in a managed application was as simple as setting a property on the thread object. In this environment, it is highly recommended that you set the name field when creating the thread, because managed code provides no way to identify a thread by its ID. In native Windows code, a thread ID can be directly matched to an individual thread. Nonetheless, keeping track of different thread IDs makes the job of debugging more difficult; it can be hard to keep track of individual thread IDs. An astute reader might have noticed in Chapter 5 the conspicuous absence of any sort of name parameter in the methods used to create threads. In addition, there was no function provided to get or set a thread name. It turns out that the standard thread APIs in Win32 lack the ability to associate a name with a thread. As a result, this association must be made by an external debugging tool. Microsoft has enabled this capability through predefined exceptions built into their debugging tools. Applications that want to see a thread referred to by name need to implement a small function that
4 raises an exception. The exception is caught by the debugger, which then takes the specified name and assigns it to the associated ID. Once the exception handler completes, the debugger will use the usersupplied name from then on. The implementation of this function can be found on the Microsoft Developer Network (MSDN) Web site at msdn.microsoft.com by searching for: setting a thread name (unmanaged). The function, named SetThreadName(), takes two arguments. The first argument is the thread ID. The recommended way of specifying the thread ID is to send the value -1, indicating that the ID of the calling thread should be used. The second parameter is the name of the thread. The SetThreadName() function calls RaiseException(), passing in a special thread exception code and a structure that includes the thread ID and name parameters specified by the programmer. Once the application has the SetThreadName() function defined, the developer may call the function to name a thread. This is shown in 228 Multi-Core Programming Listing 1.1. The function Thread1 is given the name Producer, 1 indicating that it is producing data for a consumer. Note that the function is called at the start of the thread, and that the thread ID is specified as -1. This indicates to the debugger that it should associate the calling thread with the associated ID. unsigned stdcall Thread1(void *) { } int i, x = 0; // arbitrary local variable declarations SetThreadName(-1, "Producer"); // Thread logic follows Listing 1.1 Using SetThreadName to Name a Thread Naming a thread in this fashion has a couple of limitations. This technique is a debugger construct; the OS is not in any way aware of the name of the thread. Therefore, the thread name is not available to anyone other than the debugger. You cannot programmatically query a thread for its name using this mechanism. Assigning a name to a thread using this technique requires a debugger that supports exception number 0x406D1388. Both Microsoft s Visual Studio and WinDbg debuggers support this exception. Despite these limitations, it is generally advisable to use this technique where supported as it makes using the debugger and tracking down multi-threaded bugs much easier. Putting It All Together Let s stop for a minute and take a look at applying the previously discussed principles to a simplified real-world example. Assume that you are writing a data acquisition application. Your design calls for a producer thread that samples data from a device every second and stores the reading in a global variable for subsequent processing. A consumer thread periodically runs and processes the data from 1 Admittedly the function name Thread1 should be renamed to Producer as well, but is left somewhat ambiguous for illustration purposes.
5 the producer. In order to prevent data corruption, the global variable shared by the producer and consumer is protected with a Critical Section. An example of a simple implementation of the producer and consumer threads is shown in Listing 1.2. Note that error handling is omitted for readability. 1 static int m_global = 0; 2 static CRITICAL_SECTION hlock; // protect m_global 3 4 // Simple simulation of data acquisition 5 void sample_data() 6 { 7 EnterCriticalSection(&hLock); 8 m_global = rand(); 9 LeaveCriticalSection(&hLock); 10 } // This function is an example 13 // of what can be done to data 14 // after collection 15 // In this case, you update the display 16 // in real time 17 void process_data() 18 { 19 EnterCriticalSection(&hLock); 20 printf("m_global = 0x%x\n", m_global); 21 LeaveCriticalSection(&hLock); 22 } // Producer thread to simulate real time 25 // data acquisition. Collect 30 s 26 // worth of data 27 unsigned stdcall Thread1(void *) 28 { 29 int count = 0; 30 SetThreadName(-1, "Producer");
6 31 while (1) 32 { 33 // update the data 34 sample_data(); Sleep(1000); 37 count++; 38 if (count > 30) 39 break; 40 } 41 return 0; 42 } // Consumer thread 45 // Collect data when scheduled and 46 // process it. Read 30 s worth of data 47 unsigned stdcall Thread2(void *) 48 { 49 int count = 0; 50 SetThreadName(-1, "Consumer"); 51 while (1) 52 { 53 process_data(); Sleep(1000); 56 count++; 57 if (count > 30) 58 break; 59 } 60 return 0; 61 } Listing 1.2 Simple Data Acquisition Device
7 The producer samples data on line 34 and the consumer processes the data in line 53. Given this relatively simple situation, it is easy to verify that the program is correct and free of race conditions and deadlocks. Now assume that the programmer wants to take advantage of an error detection mechanism on the data acquisition device that indicates to the user that the data sample collected has a problem. The changes made to the producer thread by the programmer are shown in Listing 1.3. void sample_data() { EnterCriticalSection(&hLock); m_global = rand(); if ((m_global % 0xC5F) == 0) { // handle error return; } LeaveCriticalSection(&hLock); } Listing 1.3 Sampling Data with Error Checking After making these changes and rebuilding, the application becomes unstable. In most instances, the application runs without any problems. However, in certain circumstances, the application stops printing data. How do you determine what s going on? The key to isolating the problem is capturing a trace of the sequence of events that occurred prior to the system hanging. This can be done with a custom trace buffer manager or with tracepoints. This example uses the trace buffer implemented in Listing 1.1. Now armed with a logging mechanism, you are ready to run the program until the error case is triggered. Once the system fails, you can stop the debugger and examine the state of the system. To do this, run the application until the point of failure. Then, using the debugger, stop the program from executing. At this point, you ll be able bring up the Threads window to see the state information for each thread, such as the one shown in Figure 1.1.
8 Figure 1.1 Examining Thread State Information Using Visual Studio 2005 When you examine the state of the application, you can see that the consumer thread is blocked, waiting for the process_data() call to return. To see what occurred prior to this failure, access the trace buffer. With the application stopped, call the PrintTraceBuffer() method directly from Visual Studio s debugger. The output of this call in this sample run is shown in Figure Thread ID Timestamp Msg x Producer: sampled data value: 0x29 4 0x00005a Consumer: processed data value: 0x29 5 0x Producer: sampled data value: 0x78 6 0x00005a Consumer: processed data value: 0x78 7 0x Producer: sampled data value: 0x18BE 8 0x Producer: sampled data value: 0x x Producer: sampled data value: 0x4AE1 10 0x Producer: sampled data value: 0x3D6C Figure 1.2 Output from trace buffer after Error Condition Occurs Examination of the trace buffer log shows that the producer thread is still making forward progress. However, no data values after the first two make it to the consumer. This coupled with the fact that the
9 thread state for the consumer thread indicates that the thread is stuck, points to an error where the critical section is not properly released. Upon closer inspection, it appears that the data value in line 7 of the trace buffer log is an error value. This leads up back to your new handling code, which handles the error but forgets to release the mutex. This causes the consumer thread to be blocked indefinitely, which leads to the consumer thread being starved. Technically this isn t a deadlock situation, as the producer thread is not waiting on a resource that the consumer thread holds. The complete data acquisition sample application is provided on this book s Web site, Conclusion This article introduced debugging for multi-threaded applications using Microsoft Visual Studio. Comprehensive testing is an essential component of writing and developing multi-threaded applications. Microsoft Visual Studio offers a simplified approach that allows developers to view, manipulate and test individual threads. Through tracepoints and breakpoint filters, Visual Studio helps developers to pinpoint and log the sequence of events that lead to a race condition or a deadlock situation. Microsoft has also enabled thread naming capability through predefined exceptions raised by the implementation of a small function. For advanced debugging, consider using the Intel software tools, specifically, the Intel Debugger, the Intel Thread Checker, and the Intel Thread Profiler. The book from which this article was sampled supplies additional information on effective software debugging and provides an excellent foundation for developers interested in learning more about multi-core processing and software optimization. This article is based on material found in the book Multi-Core Programming: Increasing Performance through Software Multi-threading by Shameem Akhter and Jason Roberts. Visit the Intel Press website to learn more about this book: Also see our Recommended Reading List for similar topics: About the Authors Shameem Akhter is a platform architect at Intel, focusing on single socket multi-core architecture and performance analysis. He has also worked as a senior software engineer with the Intel Software and Solutions Group, designing application optimizations for desktop and server platforms. Shameem holds a patent on a threading interface for constraint programming, developed as a part of his master's thesis in computer science.
10 Jason Roberts is a senior software engineer at Intel Corporation. Over the past 10 years, Jason has worked on a number of different multi-threaded software products that span a wide range of applications targeting desktop, handheld, and embedded DSP platforms. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to: Copyright Clearance Center 222 Rosewood Drive, Danvers, MA , fax Portions of this work are from Multi-Core Programming: Increasing Performance through Software Multi-threading, by Shameem Akhter and Jason Roberts, published by Intel Press, Copyright 2011 Intel Corporation. All rights reserved.
Multi-threaded Debugging Using the GNU Project Debugger
Multi-threaded Debugging Using the GNU Project Debugger Abstract Debugging is a fundamental step of software development and increasingly complex software requires greater specialization from debugging
An Introduction to Multi-threaded Debugging Techniques
An Introduction to Multi-threaded Debugging Techniques Abstract Although debugging multi-threaded applications can seem daunting, the additional complexity of the testing process is simply a product of
Real-time Debugging using GDB Tracepoints and other Eclipse features
Real-time Debugging using GDB Tracepoints and other Eclipse features GCC Summit 2010 2010-010-26 [email protected] Summary Introduction Advanced debugging features Non-stop multi-threaded debugging
How to test and debug an ASP.NET application
Chapter 4 How to test and debug an ASP.NET application 113 4 How to test and debug an ASP.NET application If you ve done much programming, you know that testing and debugging are often the most difficult
Debugging Java Applications
Debugging Java Applications Table of Contents Starting a Debugging Session...2 Debugger Windows...4 Attaching the Debugger to a Running Application...5 Starting the Debugger Outside of the Project's Main
Basic Unix/Linux 1. Software Testing Interview Prep
Basic Unix/Linux 1 Programming Fundamentals and Concepts 2 1. What is the difference between web application and client server application? Client server application is designed typically to work in a
Compute Cluster Server Lab 3: Debugging the parallel MPI programs in Microsoft Visual Studio 2005
Compute Cluster Server Lab 3: Debugging the parallel MPI programs in Microsoft Visual Studio 2005 Compute Cluster Server Lab 3: Debugging the parallel MPI programs in Microsoft Visual Studio 2005... 1
Troubleshooting.NET Applications - Knowing Which Tools to Use and When
Troubleshooting.NET Applications - Knowing Which Tools to Use and When Document Version 1.0 Abstract There are three fundamental classifications of problems encountered with distributed applications deployed
Using Microsoft Visual Studio 2010. API Reference
2010 API Reference Published: 2014-02-19 SWD-20140219103929387 Contents 1... 4 Key features of the Visual Studio plug-in... 4 Get started...5 Request a vendor account... 5 Get code signing and debug token
Software Tracing of Embedded Linux Systems using LTTng and Tracealyzer. Dr. Johan Kraft, Percepio AB
Software Tracing of Embedded Linux Systems using LTTng and Tracealyzer Dr. Johan Kraft, Percepio AB Debugging embedded software can be a challenging, time-consuming and unpredictable factor in development
Why Threads Are A Bad Idea (for most purposes)
Why Threads Are A Bad Idea (for most purposes) John Ousterhout Sun Microsystems Laboratories [email protected] http://www.sunlabs.com/~ouster Introduction Threads: Grew up in OS world (processes).
Integrated Virtual Debugger for Visual Studio Developer s Guide VMware Workstation 8.0
Integrated Virtual Debugger for Visual Studio Developer s Guide VMware Workstation 8.0 This document supports the version of each product listed and supports all subsequent versions until the document
How To Use The Correlog With The Cpl Powerpoint Powerpoint Cpl.Org Powerpoint.Org (Powerpoint) Powerpoint (Powerplst) And Powerpoint 2 (Powerstation) (Powerpoints) (Operations
orrelog SQL Table Monitor Adapter Users Manual http://www.correlog.com mailto:[email protected] CorreLog, SQL Table Monitor Users Manual Copyright 2008-2015, CorreLog, Inc. All rights reserved. No part
Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v 6. 4. 10 Steps to Developing a QNX Program Quickstart Guide
Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v 6. 4 10 Steps to Developing a QNX Program Quickstart Guide 2008, QNX Software Systems GmbH & Co. KG. A Harman International Company. All rights
Using the Query Analyzer
Using the Query Analyzer Using the Query Analyzer Objectives Explore the Query Analyzer user interface. Learn how to use the menu items and toolbars to work with SQL Server data and objects. Use object
Oracle SQL Developer for Database Developers. An Oracle White Paper June 2007
Oracle SQL Developer for Database Developers An Oracle White Paper June 2007 Oracle SQL Developer for Database Developers Introduction...3 Audience...3 Key Benefits...3 Architecture...4 Key Features...4
10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition
10 STEPS TO YOUR FIRST QNX PROGRAM QUICKSTART GUIDE Second Edition QNX QUICKSTART GUIDE A guide to help you install and configure the QNX Momentics tools and the QNX Neutrino operating system, so you can
Integrated Error-Detection Techniques: Find More Bugs in Java Applications
Integrated Error-Detection Techniques: Find More Bugs in Java Applications Software verification techniques such as pattern-based static code analysis, runtime error detection, unit testing, and flow analysis
Desktop, Web and Mobile Testing Tutorials
Desktop, Web and Mobile Testing Tutorials * Windows and the Windows logo are trademarks of the Microsoft group of companies. 2 About the Tutorial With TestComplete, you can test applications of three major
BarTender Integration Methods. Integrating BarTender s Printing and Design Functionality with Your Custom Application WHITE PAPER
BarTender Integration Methods Integrating BarTender s Printing and Design Functionality with Your Custom Application WHITE PAPER Contents Introduction 3 Integrating with External Data 4 Importing Data
Exploring Organizational Security and Auditing
Exploring Organizational Security and Auditing Contents Organizational security and audit... 3 Scenario 1: SQL Server audit... 3 Scenario 2: Contained Database Authentication...16 Scenario 3: User Defined
Eliminate Memory Errors and Improve Program Stability
Eliminate Memory Errors and Improve Program Stability with Intel Parallel Studio XE Can running one simple tool make a difference? Yes, in many cases. You can find errors that cause complex, intermittent
IBM Operational Decision Manager Version 8 Release 5. Getting Started with Business Rules
IBM Operational Decision Manager Version 8 Release 5 Getting Started with Business Rules Note Before using this information and the product it supports, read the information in Notices on page 43. This
Developing, Deploying, and Debugging Applications on Windows Embedded Standard 7
Developing, Deploying, and Debugging Applications on Windows Embedded Standard 7 Contents Overview... 1 The application... 2 Motivation... 2 Code and Environment... 2 Preparing the Windows Embedded Standard
PostgreSQL on Windows
PostgreSQL on Windows Magnus Hagander [email protected] PGCon, Ottawa May 2007 1 Agenda Why PostgreSQL on Windows PostgreSQL for the Windows user Windows for the PostgreSQL user Advances in 8.3 2 Why
Commander. The World's Leading Software for Label, Barcode, RFID & Card Printing
The World's Leading Software for Label, Barcode, RFID & Card Printing Commander Middleware for Automatically Printing in Response to User-Defined Events Contents Overview of How Commander Works 4 Triggers
14.1. bs^ir^qfkd=obcib`qflk= Ñçê=emI=rkfuI=~åÇ=léÉåsjp=eçëíë
14.1 bs^ir^qfkd=obcib`qflk= Ñçê=emI=rkfuI=~åÇ=léÉåsjp=eçëíë bî~äì~íáåö=oéñäéåíáçå=ñçê=emi=rkfui=~åç=lééåsjp=eçëíë This guide walks you quickly through key Reflection features. It covers: Getting Connected
Using Macro Scheduler For Load Testing
Using Macro Scheduler For Load Testing Copyright 2006 MJT Net Ltd Using Macro Scheduler for Automated Load Testing This document describes how Macro Scheduler can be used for load testing other software
Chapter 6, The Operating System Machine Level
Chapter 6, The Operating System Machine Level 6.1 Virtual Memory 6.2 Virtual I/O Instructions 6.3 Virtual Instructions For Parallel Processing 6.4 Example Operating Systems 6.5 Summary Virtual Memory General
An Easier Way for Cross-Platform Data Acquisition Application Development
An Easier Way for Cross-Platform Data Acquisition Application Development For industrial automation and measurement system developers, software technology continues making rapid progress. Software engineers
RTOS Debugger for ecos
RTOS Debugger for ecos TRACE32 Online Help TRACE32 Directory TRACE32 Index TRACE32 Documents... RTOS Debugger... RTOS Debugger for ecos... 1 Overview... 2 Brief Overview of Documents for New Users... 3
Microsoft Office Access 2007 which I refer to as Access throughout this book
Chapter 1 Getting Started with Access In This Chapter What is a database? Opening Access Checking out the Access interface Exploring Office Online Finding help on Access topics Microsoft Office Access
Multi-core Programming System Overview
Multi-core Programming System Overview Based on slides from Intel Software College and Multi-Core Programming increasing performance through software multi-threading by Shameem Akhter and Jason Roberts,
FileMaker 11. ODBC and JDBC Guide
FileMaker 11 ODBC and JDBC Guide 2004 2010 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker is a trademark of FileMaker, Inc. registered
Performance Tuning Guidelines for PowerExchange for Microsoft Dynamics CRM
Performance Tuning Guidelines for PowerExchange for Microsoft Dynamics CRM 1993-2016 Informatica LLC. No part of this document may be reproduced or transmitted in any form, by any means (electronic, photocopying,
Debugging Strategies
CS106A Winter 2012-2013 Handout #25 February 25, 2013 Debugging Strategies Based on a handout by Eric Roberts, Mehran Sahami, and Nick Parlante Much of your time as a computer programmer will likely be
The Darwin Game 2.0 Programming Guide
The Darwin Game 2.0 Programming Guide In The Darwin Game creatures compete to control maps and race through mazes. You play by programming your own species of creature in Java, which then acts autonomously
Recursion C++ DSP Toolkit Libraries DM6437 Cross Development
TECHNOLOGY WHITE PAPER Recursion C++ DSP Libraries DM6437 Cross Development ABSTRACT Developing complex applications, such as video, and keeping them adaptive is a real problem in the Digital Signal Processing
SQL Server 2005: SQL Query Tuning
SQL Server 2005: SQL Query Tuning Table of Contents SQL Server 2005: SQL Query Tuning...3 Lab Setup...4 Exercise 1 Troubleshooting Deadlocks with SQL Profiler...5 Exercise 2 Isolating a Slow Running Query
Migrating Non-Oracle Databases and their Applications to Oracle Database 12c O R A C L E W H I T E P A P E R D E C E M B E R 2 0 1 4
Migrating Non-Oracle Databases and their Applications to Oracle Database 12c O R A C L E W H I T E P A P E R D E C E M B E R 2 0 1 4 1. Introduction Oracle provides products that reduce the time, risk,
ENHANCE. The Style Sheet Tool for Microsoft Dynamics NAV. Microsoft Dynamics NAV 5.0. User s Guide
ENHANCE Microsoft Dynamics NAV 5.0 The Style Sheet Tool for Microsoft Dynamics NAV User s Guide The Style Sheet feature in Microsoft Dynamics TM NAV 5.0 has been enhanced with a new tool that allows you
Windows BitLocker Drive Encryption Step-by-Step Guide
Windows BitLocker Drive Encryption Step-by-Step Guide Microsoft Corporation Published: September 2006 Abstract Microsoft Windows BitLocker Drive Encryption is a new hardware-enhanced feature in the Microsoft
Java Troubleshooting and Performance
Java Troubleshooting and Performance Margus Pala Java Fundamentals 08.12.2014 Agenda Debugger Thread dumps Memory dumps Crash dumps Tools/profilers Rules of (performance) optimization 1. Don't optimize
CodeWarrior Development Studio for Microcontrollers Version 10.x Profiling and Analysis Tools Users Guide
CodeWarrior Development Studio for Microcontrollers Version 10.x Profiling and Analysis Tools Users Guide Document Number: CWMCUSWAUG Rev 10.6, 02/2014 2 Freescale Semiconductor, Inc. Contents Section
DB2 Connect for NT and the Microsoft Windows NT Load Balancing Service
DB2 Connect for NT and the Microsoft Windows NT Load Balancing Service Achieving Scalability and High Availability Abstract DB2 Connect Enterprise Edition for Windows NT provides fast and robust connectivity
Tutorial 3 Maintaining and Querying a Database
Tutorial 3 Maintaining and Querying a Database Microsoft Access 2013 Objectives Session 3.1 Find, modify, and delete records in a table Hide and unhide fields in a datasheet Work in the Query window in
For Introduction to Java Programming, 5E By Y. Daniel Liang
Supplement H: NetBeans Tutorial For Introduction to Java Programming, 5E By Y. Daniel Liang This supplement covers the following topics: Getting Started with NetBeans Creating a Project Creating, Mounting,
Security Development Tool for Microsoft Dynamics AX 2012 WHITEPAPER
Security Development Tool for Microsoft Dynamics AX 2012 WHITEPAPER Junction Solutions documentation 2012 All material contained in this documentation is proprietary and confidential to Junction Solutions,
Software Engineering for LabVIEW Applications. Elijah Kerry LabVIEW Product Manager
Software Engineering for LabVIEW Applications Elijah Kerry LabVIEW Product Manager 1 Ensuring Software Quality and Reliability Goals 1. Deliver a working product 2. Prove it works right 3. Mitigate risk
A Guide To Evaluating a Bug Tracking System
A Guide To Evaluating a Bug Tracking System White Paper By Stephen Blair, MetaQuest Software Published: October, 2004 Abstract Evaluating a bug tracking system requires that you understand how specific
Access Tutorial 3 Maintaining and Querying a Database. Microsoft Office 2013 Enhanced
Access Tutorial 3 Maintaining and Querying a Database Microsoft Office 2013 Enhanced Objectives Session 3.1 Find, modify, and delete records in a table Hide and unhide fields in a datasheet Work in the
Using Process Monitor
Using Process Monitor Process Monitor Tutorial This information was adapted from the help file for the program. Process Monitor is an advanced monitoring tool for Windows that shows real time file system,
Hypercosm. Studio. www.hypercosm.com
Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks
Introduction. What is an Operating System?
Introduction What is an Operating System? 1 What is an Operating System? 2 Why is an Operating System Needed? 3 How Did They Develop? Historical Approach Affect of Architecture 4 Efficient Utilization
IBM Tivoli Monitoring V6.2.3, how to debug issues with Windows performance objects issues - overview and tools.
IBM Tivoli Monitoring V6.2.3, how to debug issues with Windows performance objects issues - overview and tools. Page 1 of 13 The module developer assumes that you understand basic IBM Tivoli Monitoring
Integration for X-Tools and X32
Integration for X-Tools and X32 TRACE32 Online Help TRACE32 Directory TRACE32 Index TRACE32 Documents... 3rd Party Tool Integrations... Integration for X-Tools and X32... 1 Overview... 2 Brief Overview
Contents. 2. cttctx Performance Test Utility... 8. 3. Server Side Plug-In... 9. 4. Index... 11. www.faircom.com All Rights Reserved.
c-treeace Load Test c-treeace Load Test Contents 1. Performance Test Description... 1 1.1 Login Info... 2 1.2 Create Tables... 3 1.3 Run Test... 4 1.4 Last Run Threads... 5 1.5 Total Results History...
BarTender s ActiveX Automation Interface. The World's Leading Software for Label, Barcode, RFID & Card Printing
The World's Leading Software for Label, Barcode, RFID & Card Printing White Paper BarTender s ActiveX Automation Interface Controlling BarTender using Programming Languages not in the.net Family Contents
DiskPulse DISK CHANGE MONITOR
DiskPulse DISK CHANGE MONITOR User Manual Version 7.9 Oct 2015 www.diskpulse.com [email protected] 1 1 DiskPulse Overview...3 2 DiskPulse Product Versions...5 3 Using Desktop Product Version...6 3.1 Product
Oracle SQL Developer for Database Developers. An Oracle White Paper September 2008
Oracle SQL Developer for Database Developers An Oracle White Paper September 2008 Oracle SQL Developer for Database Developers Introduction...3 Audience...3 Key Benefits...3 Architecture...4 Key Features...4
Getting Started with the Internet Communications Engine
Getting Started with the Internet Communications Engine David Vriezen April 7, 2014 Contents 1 Introduction 2 2 About Ice 2 2.1 Proxies................................. 2 3 Setting Up ICE 2 4 Slices 2
Base One's Rich Client Architecture
Base One's Rich Client Architecture Base One provides a unique approach for developing Internet-enabled applications, combining both efficiency and ease of programming through its "Rich Client" architecture.
VMware vcenter Discovered Machines Import Tool User's Guide Version 5.3.0.25 for vcenter Configuration Manager 5.3
VMware vcenter Discovered Machines Import Tool User's Guide Version 5.3.0.25 for vcenter Configuration Manager 5.3 This document supports the version of each product listed and supports all subsequent
Windows Embedded Security and Surveillance Solutions
Windows Embedded Security and Surveillance Solutions Windows Embedded 2010 Page 1 Copyright The information contained in this document represents the current view of Microsoft Corporation on the issues
StreamServe Persuasion SP4 Service Broker
StreamServe Persuasion SP4 Service Broker User Guide Rev A StreamServe Persuasion SP4 Service Broker User Guide Rev A 2001-2009 STREAMSERVE, INC. ALL RIGHTS RESERVED United States patent #7,127,520 No
Visualizing gem5 via ARM DS-5 Streamline. Dam Sunwoo ([email protected]) ARM R&D December 2012
Visualizing gem5 via ARM DS-5 Streamline Dam Sunwoo ([email protected]) ARM R&D December 2012 1 The Challenge! System-level research and performance analysis becoming ever so complicated! More cores and
Test Executive And Development Studio Integrated Test Executive and Application Development Environment
Test Executive And Development Studio Integrated Test Executive and Application Development Environment MARVINTEST.COM ATEASY 9.0 ATEasy offers a rapid application development framework and a test executive
Helping you avoid stack overflow crashes!
Helping you avoid stack overflow crashes! One of the toughest (and unfortunately common) problems in embedded systems is stack overflows and the collateral corruption that it can cause. As a result, we
SQL Server. SQL Server 100 Most Asked Questions: Best Practices guide to managing, mining, building and developing SQL Server databases
SQL Server SQL Server 100 Most Asked Questions: Best Practices guide to managing, mining, building and developing SQL Server databases SQL Server 100 Success Secrets Copyright 2008 Notice of rights All
SOFTWARE TESTING TRAINING COURSES CONTENTS
SOFTWARE TESTING TRAINING COURSES CONTENTS 1 Unit I Description Objectves Duration Contents Software Testing Fundamentals and Best Practices This training course will give basic understanding on software
Course Development of Programming for General-Purpose Multicore Processors
Course Development of Programming for General-Purpose Multicore Processors Wei Zhang Department of Electrical and Computer Engineering Virginia Commonwealth University Richmond, VA 23284 [email protected]
Designing with Exceptions. CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219
Designing with Exceptions CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219 Testing vs. Debugging Testing Coding Does the code work properly YES NO 2 Debugging Testing
Lab Answer Key for Module 11: Managing Transactions and Locks
Lab Answer Key for Module 11: Managing Transactions and Locks Table of Contents Lab 11: Managing Transactions and Locks 1 Exercise 1: Using Transactions 1 Exercise 2: Managing Locks 3 Information in this
FTP Client Engine Library for Visual dbase. Programmer's Manual
FTP Client Engine Library for Visual dbase Programmer's Manual (FCE4DB) Version 3.3 May 6, 2014 This software is provided as-is. There are no warranties, expressed or implied. MarshallSoft Computing, Inc.
Introduction to AutoMate 6
Introduction to AutoMate 6 White Paper Published: February 2005 For the latest information, please see http://www.networkautomation.com/automate/. REVISION 3 (updated 5/11/2005) Abstract Businesses today
Creating Carbon Menus. (Legacy)
Creating Carbon Menus (Legacy) Contents Carbon Menus Concepts 4 Components of a Carbon Menu 4 Carbon Menu Tasks 6 Creating a Menu Using Nibs 6 The Nib File 7 The Menus Palette 11 Creating a Simple Menu
Key Benefits of Microsoft Visual Studio 2008
Key Benefits of Microsoft Visual Studio 2008 White Paper December 2007 For the latest information, please see www.microsoft.com/vstudio The information contained in this document represents the current
ANDROID DEVELOPER TOOLS TRAINING GTC 2014. Sébastien Dominé, NVIDIA
ANDROID DEVELOPER TOOLS TRAINING GTC 2014 Sébastien Dominé, NVIDIA AGENDA NVIDIA Developer Tools Introduction Multi-core CPU tools Graphics Developer Tools Compute Developer Tools NVIDIA Developer Tools
BarTender s.net SDKs
The World's Leading Software for Label, Barcode, RFID & Card Printing White Paper BarTender s.net SDKs Programmatically Controlling BarTender using C# and VB.NET Contents Overview of BarTender.NET SDKs...
Choosing a Development Tool
Microsoft Dynamics GP 2013 R2 Choosing a Development Tool White Paper This paper provides guidance when choosing which development tool to use to create an integration for Microsoft Dynamics GP. Date:
SQL SERVER DEVELOPER Available Features and Tools New Capabilities SQL Services Product Licensing Product Editions Will teach in class room
An Overview of SQL Server 2005/2008 Configuring and Installing SQL Server 2005/2008 SQL SERVER DEVELOPER Available Features and Tools New Capabilities SQL Services Product Licensing Product Editions Preparing
FRONT FLYLEAF PAGE. This page has been intentionally left blank
FRONT FLYLEAF PAGE This page has been intentionally left blank Abstract The research performed under this publication will combine virtualization technology with current kernel debugging techniques to
Microsoft Visual Basic Scripting Edition and Microsoft Windows Script Host Essentials
Microsoft Visual Basic Scripting Edition and Microsoft Windows Script Host Essentials 2433: Microsoft Visual Basic Scripting Edition and Microsoft Windows Script Host Essentials (3 Days) About this Course
Development With ARM DS-5. Mervyn Liu FAE Aug. 2015
Development With ARM DS-5 Mervyn Liu FAE Aug. 2015 1 Support for all Stages of Product Development Single IDE, compiler, debug, trace and performance analysis for all stages in the product development
LabVIEW Advanced Programming Techniques
LabVIEW Advanced Programming Techniques SECOND EDITION Rick Bitter Motorola, Schaumburg, Illinois Taqi Mohiuddin MindspeedTechnologies, Lisle, Illinois Matt Nawrocki Motorola, Schaumburg, Illinois @ CRC
A Modern Approach to Monitoring Performance in Production
An AppDynamics Business White Paper WHEN LOGGING ISN T ENOUGH A Modern Approach to Monitoring Performance in Production Ten years ago, the standard way to troubleshoot an application issue was to look
Database Application Developer Tools Using Static Analysis and Dynamic Profiling
Database Application Developer Tools Using Static Analysis and Dynamic Profiling Surajit Chaudhuri, Vivek Narasayya, Manoj Syamala Microsoft Research {surajitc,viveknar,manojsy}@microsoft.com Abstract
Microsoft Dynamics CRM Adapter for Microsoft Dynamics GP
Microsoft Dynamics Microsoft Dynamics CRM Adapter for Microsoft Dynamics GP May 2010 Find updates to this documentation at the following location. http://go.microsoft.com/fwlink/?linkid=162558&clcid=0x409
A deeper look at Inline functions
A deeper look at Inline functions I think it s safe to say that all Overload readers know what C++ inline functions are. When we declare a function or member function as inline we are trying to avoid the
Debugging Windows Applications with IDA WinDbg Plugin Copyright 2011 Hex-Rays SA
Debugging Windows Applications with IDA WinDbg Plugin Copyright 2011 Hex-Rays SA Quick overview: The Windbg debugger plugin is an IDA Pro debugger plugin that uses Microsoft's debugging engine (dbgeng)
WebSphere Business Monitor
WebSphere Business Monitor Debugger 2010 IBM Corporation This presentation provides an overview of the monitor model debugger in WebSphere Business Monitor. WBPM_Monitor_Debugger.ppt Page 1 of 23 Goals
Hands-On Lab. Building a Data-Driven Master/Detail Business Form using Visual Studio 2010. Lab version: 1.0.0. Last updated: 12/10/2010.
Hands-On Lab Building a Data-Driven Master/Detail Business Form using Visual Studio 2010 Lab version: 1.0.0 Last updated: 12/10/2010 Page 1 CONTENTS OVERVIEW... 3 EXERCISE 1: CREATING THE APPLICATION S
Application Note: AN00141 xcore-xa - Application Development
Application Note: AN00141 xcore-xa - Application Development This application note shows how to create a simple example which targets the XMOS xcore-xa device and demonstrates how to build and run this
ElectricCommander. Technical Notes MS Visual Studio Add-in Integration version 1.5.0. version 3.5 or higher. October 2010
ElectricCommander version 3.5 or higher Technical Notes MS Visual Studio Add-in Integration version 1.5.0 October 2010 This document contains information about the ElectricCommander integration with the
MD Link Integration. 2013 2015 MDI Solutions Limited
MD Link Integration 2013 2015 MDI Solutions Limited Table of Contents THE MD LINK INTEGRATION STRATEGY...3 JAVA TECHNOLOGY FOR PORTABILITY, COMPATIBILITY AND SECURITY...3 LEVERAGE XML TECHNOLOGY FOR INDUSTRY
SAS IT Resource Management 3.2
SAS IT Resource Management 3.2 Reporting Guide Second Edition SAS Documentation The correct bibliographic citation for this manual is as follows: SAS Institute Inc 2011. SAS IT Resource Management 3.2:
Developing SQL and PL/SQL with JDeveloper
Seite 1 von 23 Developing SQL and PL/SQL with JDeveloper Oracle JDeveloper 10g Preview Technologies used: SQL, PL/SQL An Oracle JDeveloper Tutorial September 2003 Content This tutorial walks through the
Debugging with TotalView
Tim Cramer 17.03.2015 IT Center der RWTH Aachen University Why to use a Debugger? If your program goes haywire, you may... ( wand (... buy a magic... read the source code again and again and...... enrich
