Skip to content

macOS: Need to run dsymutil for debug builds #4006

@JohanEngelen

Description

@JohanEngelen

When creating an executable with debug information (-g), we need to run dsymutil afterwards to create the correct debuginformation on macOS.

Not running dsymutil resulted in a strange bug, which could have been very confusing for larger source files.
It happened while working on the LSan testcase.

  1. The source did not contain //CHECK: lines yet. Compiled with -g and ran test. LSan detects memory leak, and reports it is on line 14.
  2. I added //CHECK: lines, effectively changing the line of malloc (i.e. the line on which the leaked memory was allocated).
  3. Reran the testcase. LSan still reported the old line!
  4. Running dsymutil on the executable --> now LSan reports the correct line of malloc.

AFAICT, other compilers all run dsymutil after linking for -g invocations of the compiler (e.g. clang, nim, rustc).
Note it is nice to include an option to turn default running dsymutil off (see: rust-lang/rust#79361).

Reference: https://stackoverflow.com/a/32299029

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions