Estoy tratando de utilizar las bonitas instalaciones de impresión de GDB para mostrar una clase de matriz C++ personalizada.gdb impresión bonita con llamadas a funciones directas
La clase es bastante estándar que puede encontrar en cualquier lugar. Es una plantilla parametrizada por el tipo, y se puede acceder con notación tipo C como mat [i] [j]. Esto primero devuelve implícitamente otra plantilla de la clase "Slice" que representa una fila o una columna, a la que el operador [] puede acceder nuevamente para extraer los datos. La clase en sí está utilizando una matriz C simple para almacenamiento, pero está implementando algunos trucos sobre ella, como una opción de asignar previamente una matriz más grande, permitir inicios distintos de cero, usar zancadas, etc. La clase no tiene una impresión nativa interfaz, y no puedo modificarlo o vincularlo con mi propio código fácilmente.
Las funciones personalizadas dificultan la reproducción del código de acceso directo a datos en Python. ¿Pero es eso necesario? En general, ¿por qué la impresión bonita debería reproducir la lógica del acceso a los datos? ¿No puedo usar las llamadas de C++ y usar los operadores [] para imprimir el elemento i, j-ésimo? El hecho de que la clase Slice sea temporal en GDB durante dicha solicitud complica aún más esto.
También soy bastante principiante con los scripts de python y GDB. Intenté hackear los ejemplos para reemplazar el acceso a datos con llamadas gdb.execute, pero no tengo idea de cómo acceder al nombre del objeto desde la función to_string, así que puedo usar algo como gdb.execute (??? + '[] + str (i) + ']', Falso, Verdadero).
Me pregunto cuál es la forma más efectiva de hacerlo.
Cualquiera puede juntar un ejemplo, por favor utilice? – takbal