1 /* Copyright (C) 2007-2011 The Android Open Source Project
2 **
3 ** This software is licensed under the terms of the GNU General Public
4 ** License version 2, as published by the Free Software Foundation, and
5 ** may be copied, distributed, and modified under those terms.
6 **
7 ** This program is distributed in the hope that it will be useful,
8 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
9 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10 ** GNU General Public License for more details.
11 */
12 
13 #ifndef NDK_CRASH_PARSER_H_
14 #define NDK_CRASH_PARSER_H_
15 
16 /*
17  * Contains declaration of structures and routines that are used to parse ADB
18  * log output, filtering out and printing references related to the crash dump.
19  */
20 
21 /* Crash parser descriptor. */
22 typedef struct NdkCrashParser NdkCrashParser;
23 
24 /* Creates and initializes NdkCrashParser descriptor.
25  * Param:
26  *  out_handle - Handle to the stream where to print the parser's output.
27  *    Typically, the handle is is stdout.
28  *  sym_root - Path to the root directory where symbols are stored. Note that
29  *    symbol tree starting with that root must match the tree of execuatable
30  *    modules in the device. I.e. symbols for /path/to/module must be located in
31  *    <sym_root>/path/to/module
32  * Return:
33  *  Pointer to the initialized NdkCrashParser descriptor on success, or NULL on
34  *  failure.
35  */
36 NdkCrashParser* CreateNdkCrashParser(FILE* out_handle, const char* sym_root);
37 
38 /* Destroys an NdkCrashParser descriptor.
39  * Param:
40  *  parser - NdkCrashParser descriptor, created and initialized with a call to
41  *    NdkCrashParser routine.
42  */
43 void DestroyNdkCrashParser(NdkCrashParser* parser);
44 
45 /* Parses a line from the ADB log output.
46  * Param:
47  *  parser - NdkCrashParser descriptor, created and initialized with a call to
48  *    NdkCrashParser routine.
49  *  line - ADB log output line to parse. The line must be zero-terminated, and
50  *    must not contain \r, or \n in it.
51  * Return:
52  *  0 If the line has been part of the crash dump.
53  *  1 If the line has not been part of the crash dump.
54  *  -1 If there was an error when parsing the line.
55  *
56 */
57 int ParseLine(NdkCrashParser* parser, const char* line);
58 
59 #endif  // NDK_CRASH_PARSER_H_
60