summaryrefslogtreecommitdiff
path: root/docs/parsing_stack_traces.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/parsing_stack_traces.md')
-rw-r--r--docs/parsing_stack_traces.md63
1 files changed, 63 insertions, 0 deletions
diff --git a/docs/parsing_stack_traces.md b/docs/parsing_stack_traces.md
new file mode 100644
index 00000000000..84dd8b3cd34
--- /dev/null
+++ b/docs/parsing_stack_traces.md
@@ -0,0 +1,63 @@
+# Parsing Stack Traces
+
+## `addr2line`
+
+[`addr2line`][1] is a utility to translate addresses into filenames and line numbers.
+
+```
+addr2line -e mongod -ifC <offset>
+```
+
+
+## `c++filt`
+
+Use [`c++filt`][2] to demangle function names by pasting the whole stack trace to stdin.
+
+
+## Finding the Right Binary
+
+To find the correct binary for a specific log you need to:
+
+1. Get the commit from the header of the logs.
+2. Use git to locate that commit and check for the surrounding "version bump" commit.
+3. Download and open the binary:
+
+```
+curl -O http://s3.amazonaws.com/downloads.mongodb.org/linux/mongodb-linux-x86_64-debugsymbols-1.x.x.tgz
+```
+
+You can also get the debugsymbols archive for official builds through [the Downloads page][3]. In the
+Archived Releases section, click on the appropriate platform link to view the available archives.
+Select the appropriate debug symbols archive.
+
+### Example: Reading the Log
+
+Note that the log has lines like this:
+
+```
+/home/abc/mongod(_ZN5mongo15printStackTraceERSo+0x27) [0x689280]
+```
+
+You want to use the address in between the brackets `0x689280`. Note that you will get more than one
+stack frame for the address if the code is inlined.
+
+### Example: Using `addr2line`
+
+Actual example from a v1.8.1 64-bit Linux build:
+
+```
+$ curl http://downloads.mongodb.org/linux/mongodb-linux-x86_64-debugsymbols-1.8.1.tgz > out.tgz
+$ tar -xzf out.tgz
+$ cd mongodb-linux-x86_64-debugsymbols-1.8.1/
+$ cd bin
+$ addr2line --help
+$ addr2line -i -e mongod 0x6d6a74
+/mnt/home/buildbot/slave/Linux_64bit_V1.8/mongo/db/repl/health.cpp:394
+$ addr2line -i -e mongod 0x6d0694
+/mnt/home/buildbot/slave/Linux_64bit_V1.8/mongo/db/repl/rs.h:385
+/mnt/home/buildbot/slave/Linux_64bit_V1.8/mongo/db/repl/replset_commands.cpp:111
+```
+
+[1]: https://sourceware.org/binutils/docs/binutils/addr2line.html
+[2]: https://sourceware.org/binutils/docs-2.17/binutils/c_002b_002bfilt.html
+[3]: https://www.mongodb.com/download-center