I wanted to find out who was closing stdout in my program (ie. who is calling close(1);
).
This seems to work in gdb:
(gdb) break close if $rdi == 1
The explanation is that on x86-64, register %rdi is used to pass the first argument to a function. In gdb conditionals, register names are prefixed by $. Hence the condition checks if the first argument to the function is 1.