====== Debugging Ports ====== ===== Enabling Debugging During Build ===== 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 ===== Checking Debugging Symbols ===== 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.