A method and apparatus for debugging a software program is provided that is
non-intrusive and allows multiple persons to debug concurrently in view
private sessions. In one example, a method includes preserving a memory
state of a portion of a software program, such as a database system. A
second software program is compiled and dynamically linked, and which when
executed, would normally cause modification to targeted data in the
preserved portion of the software program. The second software program is
executed by making a copy of the targeted data in the preserved portion of
the software program. The copy is modified to generate a modified copy of
the targeted data without modifying the data that is in the preserved
portion of the software program. In subsequent accesses, the user that
issued that executed the second software program accesses the modified
copy whenever the user would have otherwise accessed the corresponding
preserved portion. The second software program is made accessible to other
users of the database system by publishing in the preserved portion a
corresponding symbolic name associated with the second software program.
If another user accesses the second software program and executes it, then
another copy of the targeted data is made for that user. As before the
copy is modified to generate a modified copy of the targeted data without
modifying the data that is in the preserved portion of the software
program.
Un método y un aparato para eliminar errores de un programa del software es a condición de que es no-intruso y permite que las personas múltiples eliminen errores concurrentemente en sesiones privadas de la visión. En un ejemplo, un método incluye preservar un estado de la memoria de una porción de un programa del software, tal como un sistema de la base de datos. Se compila y se liga dinámicamente un segundo programa del software, y que cuando estaba ejecutada, causaría normalmente la modificación a los datos apuntados en la porción preservada del programa del software. El segundo programa del software es ejecutado haciendo una copia de los datos apuntados en la porción preservada del programa del software. La copia se modifica para generar una copia modificada de los datos apuntados sin la modificación de los datos que están en la porción preservada del programa del software. En accesos subsecuentes, el usuario que publicado que ejecutado el segundo programa del software tiene acceso a la copia modificada siempre que el usuario hubiera tenido acceso de otra manera a la porción preservada correspondiente. El segundo programa del software es hecho accesible a otros usuarios del sistema de la base de datos publicando en la porción preservada un nombre simbólico correspondiente asociado al segundo programa del software. Si otros accesos de usuario el segundo programa del software y lo ejecutan, entonces otra copia de los datos apuntados se hacen para ese usuario. Como antes de que la copia se modifique para generar una copia modificada de los datos apuntados sin la modificación de los datos que están en la porción preservada del programa del software.