Add the line:
$DB::deep = 500; # or more if necessary
to the start of your program.
The following program runs to completion in the debugger:
use strict;
use warnings;
sub f($) {
        my $x = shift;
        print "$x\n";
        if ($x < 200) {
                f(1 + $x);
        }
}
$DB::deep = 500;
f(1);
outputting:
198
199
200
Debugged program terminated.  Use q to quit or R to restart,
  use o inhibit_exit to avoid stopping after program termination,
  h q, h R or h o to get additional info.
  DB<1> _
Without the $DB::deep = 500; line, it stops at 100, the same as yours:
97
98
99
main::f(qq.pl:4):               my $x = shift;
100 levels deep in subroutine calls!
  DB<1> _
That's been tested successfully up to a stack depth of 50,000 (use 50000 in the if statement and set $DB::deep to 50001). If your stack depth is greater than that, I suspect you should be re-engineering rather than debugging :-)
By the way, if you don't want to touch the code at all, you can change that value in the debugger before running your code - just enter $Db::deep=500; before you enter c to run the code, or just set it in your .perldb file:
BEGIN {$DB::deep = 500;}