% cat testdiv2.c main() { int i; i = div2(-1); printf("-1/2 = %d\n", i); } div2(i) { int j; j = i>>1; return(j); } % cc -g testdiv2.c % a.out -1/2 = -1 % sdb No core image # Warning message from sdb */^div2 # Search for procedure "div2" 6: div2(i) { # It starts at line 6 *z # Print the next few lines 6: div2(i) { 7: int j; 8: j = i>>1; 9: return(j); 10: } *div2:b # Place a breakpoint at beginning of div2 div2:8 b # Sdb echoes proc name and line number *r # Run the procedure Breakpoint at # Execution stops just before line 8 div2:8: j = i>>1; *t # Print trace of subroutine calls div2(-1) [testdiv2.c:8] main(1,2147483380,2147483388) [testdiv2.c:3] *i/ # Print i -1 *s # Single step div2:9: return(j); # Execution stops just before line 9 *j/ # Print j -1 *8d # Delete the breakpoint *div2(1)/ # Try running div2 with different args 0 *div2(-2)/ -1 *div2(-3)/ -2 *q # Exit sdb