OLD | NEW |
1 # Introduction | 1 # Introduction |
2 | 2 |
3 Breakpad is a library and tool suite that allows you to distribute an | 3 Breakpad is a library and tool suite that allows you to distribute an |
4 application to users with compiler-provided debugging information removed, | 4 application to users with compiler-provided debugging information removed, |
5 record crashes in compact "minidump" files, send them back to your server, and | 5 record crashes in compact "minidump" files, send them back to your server, and |
6 produce C and C++ stack traces from these minidumps. Breakpad can also write | 6 produce C and C++ stack traces from these minidumps. Breakpad can also write |
7 minidumps on request for programs that have not crashed. | 7 minidumps on request for programs that have not crashed. |
8 | 8 |
9 Breakpad is currently used by Google Chrome, Firefox, Google Picasa, Camino, | 9 Breakpad is currently used by Google Chrome, Firefox, Google Picasa, Camino, |
10 Google Earth, and other projects. | 10 Google Earth, and other projects. |
11 | 11 |
12 ![http://google-breakpad.googlecode.com/svn/wiki/breakpad.png] | 12  |
13 (http://google-breakpad.googlecode.com/svn/wiki/breakpad.png) | |
14 | 13 |
15 Breakpad has three main components: | 14 Breakpad has three main components: |
16 | 15 |
17 * The **client** is a library that you include in your application. It can | 16 * The **client** is a library that you include in your application. It can |
18 write minidump files capturing the current threads' state and the identities | 17 write minidump files capturing the current threads' state and the identities |
19 of the currently loaded executable and shared libraries. You can configure | 18 of the currently loaded executable and shared libraries. You can configure |
20 the client to write a minidump when a crash occurs, or when explicitly | 19 the client to write a minidump when a crash occurs, or when explicitly |
21 requested. | 20 requested. |
22 | 21 |
23 * The **symbol dumper** is a program that reads the debugging information | 22 * The **symbol dumper** is a program that reads the debugging information |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 that writing the minidump from within the crashed process is unsafe - key | 82 that writing the minidump from within the crashed process is unsafe - key |
84 process data structures could be corrupted, or the stack on which the exception | 83 process data structures could be corrupted, or the stack on which the exception |
85 handler runs could have been overwritten, etc. All 3 platforms support what's | 84 handler runs could have been overwritten, etc. All 3 platforms support what's |
86 known as "out-of-process" exception handling. | 85 known as "out-of-process" exception handling. |
87 | 86 |
88 # Integration overview | 87 # Integration overview |
89 | 88 |
90 ## Breakpad Code Overview | 89 ## Breakpad Code Overview |
91 | 90 |
92 All the client-side code is found by visiting the Google Project at | 91 All the client-side code is found by visiting the Google Project at |
93 http://code.google.com/p/google-breakpad. The following directory structure is | 92 https://chromium.googlesource.com/breakpad/breakpad/. The following directory |
94 present in the `src` directory: | 93 structure is present in the [src](/src/) directory: |
95 | 94 |
96 * `processor` Contains minidump-processing code that is used on the server | 95 * [processor](/src/processor/): Contains minidump-processing code that is used o
n the |
97 side and isn't of use on the client side | 96 server side and isn't of use on the client side |
98 * `client` Contains client minidump-generation libraries for all platforms | 97 * [client](/src/client/): Contains client minidump-generation libraries for all |
99 * `tools` Contains source code & projects for building various tools on each | 98 platforms |
100 platform. | 99 * [tools](/src/tools/): Contains source code & projects for building various too
ls on |
| 100 each platform. |
101 | 101 |
102 (Among other directories) | 102 (Among other directories) |
103 | 103 |
104 * <a | 104 * [Windows Integration Guide](./windows_client_integration.md) |
105 href='http://code.google.com/p/google-breakpad/wiki/WindowsClientIntegration
'>Windows | 105 * [Mac Integration Guide](./mac_breakpad_starter_guide.md) |
106 Integration Guide</a> | 106 * [Linux Integration Guide](./linux_starter_guide.md) |
107 * <a | |
108 href='http://code.google.com/p/google-breakpad/wiki/MacBreakpadStarterGuide'
>Mac | |
109 Integration Guide</a> | |
110 * <a href='http://code.google.com/p/google-breakpad/wiki/LinuxStarterGuide'> | |
111 Linux Integration Guide</a> | |
112 | 107 |
113 ## Build process specifics(symbol generation) | 108 ## Build process specifics(symbol generation) |
114 | 109 |
115 This applies to all platforms. Inside `src/tools/{platform}/dump_syms` is a tool | 110 This applies to all platforms. Inside `src/tools/{platform}/dump_syms` is a tool |
116 that can read debugging information for each platform (e.g. for OS X/Linux, | 111 that can read debugging information for each platform (e.g. for OS X/Linux, |
117 DWARF and STABS, and for Windows, PDB files) and generate a Breakpad symbol | 112 DWARF and STABS, and for Windows, PDB files) and generate a Breakpad symbol |
118 file. This tool should be run on your binary before it's stripped(in the case of | 113 file. This tool should be run on your binary before it's stripped(in the case of |
119 OS X/Linux) and the symbol files need to be stored somewhere that the minidump | 114 OS X/Linux) and the symbol files need to be stored somewhere that the minidump |
120 processor can find. There is another tool, `symupload`, that can be used to | 115 processor can find. There is another tool, `symupload`, that can be used to |
121 upload symbol files if you have written a server that can accept them. | 116 upload symbol files if you have written a server that can accept them. |
OLD | NEW |