Debugging Ports

Whether ports are built with debugging symbols can be controlled by the settings in /etc/make.conf.

Enable debugging for all ports:

WITH_DEBUG=	yes

Enable debugging for select ports:

WITH_DEBUG_PORTS=	mail/dovecot security/krb5

If debugging is enabled for a specific port, the ports system will:

  • Add DEBUG_FLAGS (defaults to -g) to CFLAGS
  • Tries to prevent the binaries from being stripped (including checking the install target to replace “install-strip” with “install”)

To customize the changes to CFLAGS in debugging mode:

DEBUG_FLAGS=	-g -O0

This will instruct the compiler to:

  • -g: Generate debug information
  • -O0: Disable compiler optimizations

After a port has been built with the above debugging steps, you can check they have worked by using file(1) to analyze the installed binaries.

$ file /usr/local/sbin/dovecot
/usr/local/sbin/dovecot: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 12.0 (1200054), FreeBSD-style, with debug_info, not stripped

Note that this file has debug_info and is not stripped.

  • debuggingports.txt
  • Last modified: 2026/10/12 10:55
  • (external edit)