diff --git a/repos/ports/run/gdb_monitor.inc b/repos/ports/run/gdb_monitor.inc
index 62d429b7e3..026916aefe 100644
--- a/repos/ports/run/gdb_monitor.inc
+++ b/repos/ports/run/gdb_monitor.inc
@@ -22,8 +22,8 @@ proc gdb_main_breakpoint_cmds { target_binary_name } {
 	# load the symbols of ld.lib.so
 	append gdb_cmds {-ex "symbol-file bin/ld.lib.so" }
 
-	# set a breakpoint in the 'call_program_main()' function
-	append gdb_cmds {-ex "b call_program_main" }
+	# set a breakpoint in the 'Linker::Binary::call_entry_point' function
+	append gdb_cmds {-ex "b Linker::Binary::call_entry_point" }
 
 	# continue execution until the breakpoint triggers
 	append gdb_cmds {-ex "c" }
@@ -37,6 +37,9 @@ proc gdb_main_breakpoint_cmds { target_binary_name } {
 	# set a breakpoint in the application's 'main()' function
 	append gdb_cmds {-ex "b main()" }
 
+	# set search path for "sharedlibrary" to bin
+	append gdb_cmds {-ex "set solib-search-path bin" }
+
 	# load the symbols of loaded shared libraries
 	append gdb_cmds {-ex "sharedlibrary" }
 
diff --git a/repos/ports/run/gdb_monitor.run b/repos/ports/run/gdb_monitor.run
index 33ead46e9a..dbb0ae33c1 100644
--- a/repos/ports/run/gdb_monitor.run
+++ b/repos/ports/run/gdb_monitor.run
@@ -114,6 +114,7 @@ append qemu_args " -serial chardev:uart "
 append qemu_args " -chardev socket,id=uart,port=$local_port,host=localhost,server,nowait "
 
 run_genode_until {.*Remote debugging using /dev/terminal.*} 30
+set genode_id [output_spawn_id]
 
 puts "GDB monitor is up, starting GDB"
 
@@ -168,9 +169,11 @@ append gdb_cmds {-ex "q" }
 
 # run GDB and redirect stderr to stdio to get the relevant output into the expect buffer  
 eval spawn [gdb] bin/$gdb_target_binary -n -batch $gdb_cmds 2&>1
+set gdb_id $spawn_id
 
 set timeout 120
 expect {
+	-i [list $genode_id $gdb_id]
 	timeout { puts stderr "Error: Test execution timed out"; exit -2 }
 }
 
@@ -185,7 +188,7 @@ if {![regexp {Breakpoint 2, main ()} $gdb_output]} {
 	exit -1
 }
 
-if {![regexp {Breakpoint 3, puts ()} $gdb_output]} {
+if {![regexp {Breakpoint 3, puts (.*)} $gdb_output]} {
 	puts "Error: Breakpoint in shared library did not trigger"
 	exit -1
 }
diff --git a/repos/ports/run/gdb_monitor_interactive.run b/repos/ports/run/gdb_monitor_interactive.run
index 1e6842f01a..d9b36bd5af 100644
--- a/repos/ports/run/gdb_monitor_interactive.run
+++ b/repos/ports/run/gdb_monitor_interactive.run
@@ -123,6 +123,6 @@ puts "command: [gdb] bin/$gdb_target_binary $gdb_cmds"
 
 exec [terminal] -e "[gdb] bin/test-gdb_monitor $gdb_cmds" &
 
-interact
+interact -i [output_spawn_id]
 
 # vi: set ft=tcl :