Changes between Version 21 and Version 22 of CompileApp
- Timestamp:
- May 9, 2008, 12:04:11 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
CompileApp
v21 v22 1 1 = Building BOINC applications = 2 3 [[PageOutline]] 2 4 3 5 When building a BOINC application, you typically … … 6 8 * want each version to run on a wide range of volunteered computers (e.g. the Linux/x86 version should run on Linux systems of many ages and types). 7 9 8 Achieving these goals can be challenging. However, BOINC provides tools and example files that simplify the task. 10 Achieving these goals can be challenging. 11 However, BOINC provides tools and example files that simplify the task. 9 12 10 13 Whether you're creating a new application or adapting an existing application to BOINC, … … 77 80 }}} 78 81 79 == Symbol Stores==82 === Symbol Stores === 80 83 81 === Introduction === 84 To obtain useful stack traces in the event of an application crash, symbols are needed. 85 Normally symbols are "stripped" from executables. 86 Without symbols, callstacks are just a list of memory addresses. 87 You then must load the un-stripped executable in memory using the 88 same operating system and similar processor to jump to that memory address in order 89 to determine the function name and parameters. 90 This is very labor intensive. 82 91 83 In order to obtain useful diagnostic information in the event of an application crash, it is necessary to dump a callstack and any other relevant information about what was going on at the time of the crash. Symbols are only needed during a crash event, therefore they are stripped from most applications to cut down on the binary size and bandwidth requirements to deploy a new release. 92 Microsoft created a technology called a 'Symbol Store' which allows Windows debuggers 93 to locate and download compressed symbol files to diagnose problems 94 and convert function pointers into human readable text. 95 This greatly speeds up the process of diagnosing and fixing bugs. 84 96 85 Without symbols, callstacks tend to be nothing more than a list of function pointers in memory. A developer has to load the un-stripped executable in memory using the same operating system and similar processor to jump to that memory address in order to determine the function name and parameters. This is very labor intensive and generally not a very fun job. 97 With the BOINC Runtime Debugger for Windows framework a project can publish their 98 symbol files and only have to distribute the application to each of the BOINC clients. 99 When a crash event occurs the runtime framework will download the symbol 100 file from the symbol store and then proceed to dump as much diagnostic information 101 as possible to help projects diagnose the failure. 86 102 87 Microsoft created a technology called a 'Symbol Store' to use with their debugger technology which allows Windows debuggers to locate and download compressed symbol files to diagnose problems and convert function pointers into human readable text. This greatly speeds up the process of diagnosing and fixing bugs. 88 89 With the BOINC Runtime Debugger for Windows framework a project can publish their symbol files and only have to distribute the application to each of the BOINC clients. When a crash event occurs the runtime framework will download the symbol file from the symbol store and then proceed to dump as much diagnostic information as possible to help projects diagnose the failure. 90 91 === Requirements === 103 ==== Requirements ==== 92 104 You'll need the latest stable release of the [http://www.microsoft.com/whdc/devtools/debugging/default.mspx Debugging Tools for Windows. ] 93 105 … … 98 110 You'll need to explicitly name both your EXE and PDB before compilation since the debugger bases the name of the PDB file off of information that is stored in the executable header. 99 111 100 === Project Symbol Store===112 ==== Project Symbol Store ==== 101 113 102 Specifying a project wide symbol store is as easy as adding the symstore element to your config.xml file for the project. 103 104 Below is an XML shred with an example symstore element. 114 Add a symstore element to your config.xml file for the project: 105 115 106 116 {{{ … … 112 122 }}} 113 123 114 === Adding symbols to the symbol store===124 ==== Adding symbols to the symbol store ==== 115 125 [http://msdn.microsoft.com/en-us/library/cc266480.aspx Symstore] is a utility to manage symbol stores. You'll want to create a local symbol store on your Windows build machine in which you'll initially add new symbol files with each revision of your application. 116 126 … … 123 133 }}} 124 134 125 === Uploading symbols to the symbol store===135 ==== Uploading symbols to the symbol store ==== 126 136 127 137 Most projects tend to use scp to copy files between Windows machines and their project server.