Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Side by Side Diff: docs/mac_breakpad_starter_guide.md

Issue 2103273003: docs: clean up markdown Base URL: https://chromium.googlesource.com/breakpad/breakpad.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # How To Add Breakpad To Your Mac Client Application 1 # How To Add Breakpad To Your Mac Client Application
2 2
3 This document is a step-by-step recipe to get your Mac client app to build with 3 This document is a step-by-step recipe to get your Mac client app to build with
4 Breakpad. 4 Breakpad.
5 5
6 ## Preparing a binary build of Breakpad for use in your tree 6 ## Preparing a binary build of Breakpad for use in your tree
7 7
8 You can either check in a binary build of the Breakpad framework & tools or 8 You can either check in a binary build of the Breakpad framework & tools or
9 build it as a dependency of your project. The former is recommended, and 9 build it as a dependency of your project. The former is recommended, and
10 detailed here, since building dependencies through other projects is 10 detailed here, since building dependencies through other projects is
11 problematic(matching up configuration names), and the Breakpad code doesn't 11 problematic(matching up configuration names), and the Breakpad code doesn't
12 change nearly often enough as your application's will. 12 change nearly often enough as your application's will.
13 13
14 ## Building the requisite targets 14 ## Building the requisite targets
15 15
16 All directories are relative to the `src` directory of the Breakpad checkout. 16 All directories are relative to the `src` directory of the Breakpad checkout.
17 17
18 * Build the 'All' target of `client/mac/Breakpad.xcodeproj` in Release mode. 18 * Build the `All` target of
19 * Execute `cp -R client/mac/build/Release/Breakpad.framework <location in your 19 [client/mac/Breakpad.xcodeproj](/src/client/mac/Breakpad.xcodeproj/)
20 source tree>` 20 in Release mode.
21 * Inside `tools/mac/dump_syms` directory, build dump\_syms.xcodeproj, and copy 21 * Execute `cp -R client/mac/build/Release/Breakpad.framework <location in your
22 tools/mac/dump\_syms/build/Release/dump\_syms to a safe location where it 22 source tree>`
23 can be run during the build process. 23 * Inside [tools/mac/dump_syms](/src/tools/mac/dump_syms/) directory, build
24 `dump_syms.xcodeproj`, and copy
25 `tools/mac/dump_syms/build/Release/dump_syms` to a safe location where it
26 can be run during the build process.
24 27
25 ## Adding Breakpad.framework 28 ## Adding Breakpad.framework
26 29
27 Inside your application's framework, add the Breakpad.Framework to your 30 Inside your application's framework, add the Breakpad.Framework to your
28 project's framework settings. When you select it from the file chooser, it will 31 project's framework settings. When you select it from the file chooser, it will
29 let you pick a target to add it to; go ahead and check the one that's relevant 32 let you pick a target to add it to; go ahead and check the one that's relevant
30 to your application. 33 to your application.
31 34
32 ## Copy Breakpad into your Application Package 35 ## Copy Breakpad into your Application Package
33 36
(...skipping 27 matching lines...) Expand all
61 64
62 * Turn on Separate Strip, 65 * Turn on Separate Strip,
63 * Set the Strip Style to Non-Global Symbols. 66 * Set the Strip Style to Non-Global Symbols.
64 67
65 ## Write Code! 68 ## Write Code!
66 69
67 You'll need to have an object that acts as the delegate for NSApplication. 70 You'll need to have an object that acts as the delegate for NSApplication.
68 Inside this object's header, you'll need to add 71 Inside this object's header, you'll need to add
69 72
70 1. add an ivar for Breakpad and 73 1. add an ivar for Breakpad and
71 2. a declaration for the applicationShouldTerminate:(NSApplication`*` sender) 74 2. a declaration for the `applicationShouldTerminate:(NSApplication* sender)`
72 message. 75 message.
73 76
74 ``` 77 ```
75 #import <Breakpad/Breakpad.h> 78 #import <Breakpad/Breakpad.h>
76 79
77 @interface BreakpadTest : NSObject { 80 @interface BreakpadTest : NSObject {
78 . 81 .
79 . 82 .
80 . 83 .
81 BreakpadRef breakpad; 84 BreakpadRef breakpad;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sende r { 121 - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sende r {
119 BreakpadRelease(breakpad); 122 BreakpadRelease(breakpad);
120 return NSTerminateNow; 123 return NSTerminateNow;
121 } 124 }
122 ``` 125 ```
123 126
124 ## Configure Breakpad 127 ## Configure Breakpad
125 128
126 Configure Breakpad for your application. 129 Configure Breakpad for your application.
127 130
128 1. Take a look inside the Breakpad.framework at the Breakpad.h file for the 131 1. Take a look inside the `Breakpad.framework` at the `Breakpad.h` file for the
129 keys, default values, and descriptions to be passed to BreakpadCreate(). 132 keys, default values, and descriptions to be passed to `BreakpadCreate()`.
130 2. Add/Edit the Breakpad specific entries in the dictionary passed to 133 2. Add/Edit the Breakpad specific entries in the dictionary passed to
131 BreakpadCreate() -- typically your application's info plist. 134 `BreakpadCreate()` -- typically your application's info plist.
132 135
133 Example from the Notifier Info.plist: 136 Example from the Notifier Info.plist:
134 `<key>BreakpadProduct</key><string>Google_Notifier_Mac</string> 137 `<key>BreakpadProduct</key><string>Google_Notifier_Mac</string>
135 <key>BreakpadProductDisplay</key><string>${PRODUCT_NAME}</string> 138 <key>BreakpadProductDisplay</key><string>${PRODUCT_NAME}</string>
136 ` 139 `
137 140
138 ## Build Your Application 141 ## Build Your Application
139 142
140 Almost done! 143 Almost done!
141 144
(...skipping 26 matching lines...) Expand all
168 <key>BreakpadURL</key> 171 <key>BreakpadURL</key>
169 <string>upload URL</string> 172 <string>upload URL</string>
170 <key>BreakpadReportInterval</key> 173 <key>BreakpadReportInterval</key>
171 <string>30</string> 174 <string>30</string>
172 ``` 175 ```
173 176
174 ## Final Notes 177 ## Final Notes
175 178
176 Breakpad checks whether it is being run under a debugger, and if so, normally 179 Breakpad checks whether it is being run under a debugger, and if so, normally
177 does nothing. But, you can force Breakpad to function under a debugger by 180 does nothing. But, you can force Breakpad to function under a debugger by
178 setting the Unix shell variable BREAKPAD\_IGNORE\_DEBUGGER to a non-zero value. 181 setting the Unix shell variable `BREAKPAD_IGNORE_DEBUGGER` to a non-zero value.
179 You can bracket the source code in the above Write The Code step with #if DEBUG 182 You can bracket the source code in the above Write The Code step with `#if DEBUG `
180 to completely eliminate it from Debug builds. See 183 to completely eliminate it from Debug builds. See
181 //depot/googlemac/GoogleNotifier/main.m for an example. FYI, when your process 184 `//depot/googlemac/GoogleNotifier/main.m` for an example. FYI, when your process
182 forks(), exception handlers are reset to the default for child processes. So 185 forks(), exception handlers are reset to the default for child processes. So
183 they must reinitialize Breakpad, otherwise exceptions will be handled by Apple's 186 they must reinitialize Breakpad, otherwise exceptions will be handled by Apple's
184 Crash Reporter. 187 Crash Reporter.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698