Primeiro, você deve tentar determinar em qual iteração o problema ocorre. Se você tiver sorte, então é sempre o mesmo. Se você não fizer isso de qualquer maneira, deverá contar as iterações e imprimi-las ou gravá-las em um arquivo:
exec 3>/my/logfile
iter=0
while whatevercondition; do
((iter++))
echo "$iter" >&3
done
Se o problema ocorrer sempre na mesma iteração, você deverá ativar a saída de depuração e, em seguida:
CRASH_ITER=12345
iter=0
while whatevercondition; do
((iter++))
if [ "$iter" -eq "$CRASH_ITER" ]; then
set -vx
fi
done
erros não reprodutíveis
Se não for possível restringir o erro a uma certa iteração, você pode ter o bash gravando a saída de depuração completa em um arquivo:
bash -vx ./script.sh 2>debug.txt