Changes between Version 21 and Version 22 of CompileApp


Ignore:
Timestamp:
May 9, 2008, 12:04:11 PM (16 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CompileApp

    v21 v22  
    11= Building BOINC applications =
     2
     3[[PageOutline]]
    24
    35When building a BOINC application, you typically
     
    68 * 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).
    79
    8 Achieving these goals can be challenging. However, BOINC provides tools and example files that simplify the task.
     10Achieving these goals can be challenging.
     11However, BOINC provides tools and example files that simplify the task.
    912
    1013Whether you're creating a new application or adapting an existing application to BOINC,
     
    7780}}}
    7881
    79 == Symbol Stores ==
     82=== Symbol Stores ===
    8083
    81 === Introduction ===
     84To obtain useful stack traces in the event of an application crash, symbols are needed.
     85Normally symbols are "stripped" from executables.
     86Without symbols, callstacks are just a list of memory addresses.
     87You then must load the un-stripped executable in memory using the
     88same operating system and similar processor to jump to that memory address in order
     89to determine the function name and parameters.
     90This is very labor intensive.
    8291
    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.
     92Microsoft created a technology called a 'Symbol Store' which allows Windows debuggers
     93to locate and download compressed symbol files to diagnose problems
     94and convert function pointers into human readable text.
     95This greatly speeds up the process of diagnosing and fixing bugs.
    8496
    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.
     97With the BOINC Runtime Debugger for Windows framework a project can publish their
     98symbol files and only have to distribute the application to each of the BOINC  clients.
     99When a crash event occurs the runtime framework will download the symbol
     100file from the symbol store and then proceed to dump as much diagnostic information
     101as possible to help projects diagnose the failure.
    86102
    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 ====
    92104You'll need the latest stable release of the  [http://www.microsoft.com/whdc/devtools/debugging/default.mspx Debugging Tools for Windows. ]
    93105
     
    98110You'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.
    99111
    100 === Project Symbol Store ===
     112==== Project Symbol Store ====
    101113
    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.
     114Add a symstore element to your config.xml file for the project:
    105115
    106116{{{
     
    112122}}}
    113123
    114 === Adding symbols to the symbol store ===
     124==== Adding symbols to the symbol store ====
    115125 [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.
    116126
     
    123133}}}
    124134
    125 === Uploading symbols to the symbol store ===
     135==== Uploading symbols to the symbol store ====
    126136
    127137Most projects tend to use scp to copy files between Windows machines and their project server.