How to Debug OpenSSL with Eclipse

OpenSSL

In the OpenSSL source directory, execute the following command:

$ ./config --debug --prefix=/tmp/openssl -Wl,--enable-new-dtags,-rpath,'$(LIBRPATH)'

--debug: compiles in debug mode

--prefix=/tmp/openssl: sets the install directory. You need to set this flag in order for the compiled openssl to link with the compiled libraries libcrypto and libssl (which are part of openssl)

-Wl,--enable-new-dtags,-rpath,'$(LIBRPATH)': same reason as --prefix, this is to make sure that the compiled openssl links with the compiled libraries libcrypto and libssl.

Then, compile OpenSSL:

$ make

Finally, install OpenSSL:

$ make install

Make sure that openssl loads libssl.so.1.1 and libcrypto.so.1.1 that you just compiled:

$ ldd /tmp/openssl/bin/openssl
	linux-vdso.so.1 (0x00007ffc32241000)
	libssl.so.1.1 => /tmp/openssl/lib/libssl.so.1.1 (0x00007f7acf5ac000)
	libcrypto.so.1.1 => /tmp/openssl/lib/libcrypto.so.1.1 (0x00007f7acf0ad000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f7aceea9000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f7acec8a000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f7ace8a5000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f7acf851000)

libssl.so.1.1 binds to /tmp/openssl/lib/libssl.so.1.1 (not the system library /lib64/libssl.so.1.1) and libcrypto.so.1.1 binds to /tmp/openssl/lib/libcrypto.so.1.1 (not the system library /lib64/libcrypto.so.1.1).

Eclipse

CDT

Make sure that you have Eclipse CDT.

Import

In the main menu, select File | New | Project:

Choose Makefile Project with Existing Code:

Click on Browse… and go to your OpenSSL source directory. Then, choose your toolchain for the indexer. Finally, click Finish.

Debugging

Go to Run | Debug Configurations:

Create a new “C/C++ Application” configuration. Choose your OpenSSL project (openssl) and C/C++ Application (apps/openssl):

Set the arguments in the arguments tab (genrsa) and click on Debug:

Eclipse should now have started openssl and paused at the first line of the main:

You can now debug OpenSSL with Eclipse!