Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add section on how to build debug build #22510

Closed
wants to merge 7 commits into from
Closed
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,43 @@ To install this version of Node.js into a system directory:
$ [sudo] make install
```

#### Building a debug build

If you run into an issue where the information provided by the JS stack trace
is not enough, or if you suspect the error happens outside of the JS VM, you
can try to build a debug enabled binary:

```console
$ ./configure --debug
$ make -j4
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might suggest make -C out BUILDTYPE=Debug -j4 to avoid unnececerily building the Release binary. That could allow you to replace the following paragraph with:

If the build finished successfully, the debug enabled binary will be at `out/Debug/node`

```

`make` with `./configure --debug` generates two binaries, the regular release
one in `out/Release/node` and a debug binary in `out/Debug/node`, only the
release version is actually installed when you run `make install`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: unnecessary space at the beginning.


To use the debug build with all the normal dependencies overwrite the release
version in the install directory:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also space.


``` console
$ make install --prefix=/opt/node-debug/
$ cp -a -f out/Debug/node /opt/node-debug/node
```

When using the debug binary, core dumps will be generated in case of crashes.
These core dumps are useful for debugging when provided with the
corresponding original debug binary and system information.

Reading the core dump requires a gdb that was build on the same platform as the
Copy link
Member

@lundibundi lundibundi Aug 29, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd suggest:
Reading the core dump requires gdb built on the same platform core dump was captured on, wdyt?

core dump was captured, so 64bit gdb if node was build as 64bit and Linux gdb if node
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so 64bit gdb if node was build as 64bit and Linux gdb if node... -> (i.e. 64bit gdb for node built on a 64bit system, Linux gdb for node built on Linux) wdyt?

was built on Linux else you might get errors like "not in executable format: File format not recognized".
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/else/otherwise/

Also, shouldn't might be will, as I think it cannot work at all for such cases?


Example of generating a backtrace from the core dump:

``` console
gdb /opt/node-debug/node core.node.8.1535359906
backtrace
```

### Windows

Expand Down