Un Debugger es para testear una aplicación e intentar solucionar bugs, a esta metodología se la denomina Debugging:
http://en.wikipedia.org/wiki/DebuggingUn Dissasembler es para traducir una aplicación, es decir, el lenguaje compilado, a su equivalente representación de lenguaje ensamblado separando el código de los datos, es algo parecido a un Decompiler.
PD: Los debuggers suelen llevar incorporados un dissasembler, quizás eso pueda confundir las características de ambos.
PD2: No se mucho sobre ingeniería inversa, intenté explicar la definición de Dissasembler lo mejor posible.
Saludos
ok amigo pero con el depurador se puede arreglar los bugs de un ejecutable en lenguaje ensamblador y luego el depurador re-compila el ejecutable?