[Lea el código fuente de MFiX] Fanwai: ¿Cómo usar gdb para depurar el programa mfix? Y use el código de Visual Studio para visualizar la depuración

@ [TOC]
## La premisa es preparar
linux / windows con gdb instalado

Si no, descargue uno en apt-get en ubantu, generalmente viene con
Windows para instalar mingw64 (tenga cuidado de no cometer errores de 64 bits y 32 bits no pueden ser universales)

----
Uso la máquina virtual Ubantu 16.04
con mfix-19.3.1

## 方法
### 1. Compile su solucionador

En la terminal, escriba
`` `bash
build_mfixsolver --batch" FCFLAGS = -g -O0 "-j 4``
`
Una vez completado, aparecerá un archivo ejecutable llamado mfixsolver

Explicación de parámetros:
--batch significa que solo puede ejecutar mfix (sin GUI) desde la línea de comandos. Solo de esta manera el archivo ejecutable
FCFLAGS representa el parámetro pasado al compilador (el valor predeterminado no está especificado por gfortran)
-g significa depuración de salida La información, esta información será recibida por gdb
-O0 significa que no hay optimización de compilación. Solo si se agrega este parámetro, las declaraciones se ejecutarán una por una en orden, de lo contrario, encontrará que las declaraciones del programa se saltan y luego llegará después de un tiempo.

### 2. Cargue el BGF programa compilado
`` `fiesta de
GDB mfixsolver
` ``
entonces el terminal entrará dentro de GDB

### 3. Ejecutar y ver el código fuente en gdb
Ingresando
`` `bash
list or
l```
mostrará algunas líneas de código fuente

Introduce
`` `fiesta
RUN -f gas_and_solid_Yin.mfx
` ``
se ejecute el programa, que gas_and_solid_Yin.mfx reemplazado con el nombre de su propia .mfx de

El Control C no puede terminar el programa aquí.
Para terminar el programa, use == control + z ==

Consulte
[https://www.cnblogs.com/HKUI/p/8955443.htmlfont>(https://www.cnblogs.com/HKUI/p/8955443.html) para conocer el uso común de gbd


## Resumen de errores comunes
1. Aparecerá si se compila en modo de línea de comando puro con --batch

`` `Shell
no en formato ejecutable: Formato de archivo no reconocido
` ``
Esto es porque el compilador de interfaz gráfica de usuario en realidad se produce por un documento de concha, una declaración mediante la cual: apuntando pitón
mfix visible de la interfaz gráfica de usuario es un conjunto de Python Shell Procedimiento

2. Si no se dan parámetros cuando se ejecuta en gdb -f gas_and_solid_Yin.mfx
`` `
***************************** *****************************************
De: mfix.f
Error 1000: Entrada el archivo de datos no existe: mfix.dat Aborting
.
*************************************** *******************************
`` ``
Es muy simple, sin especificar el nombre del archivo de la plataforma, el nombre se determina automáticamente como mfix. dat, solo puedes usar este nombre en la versión anterior

## Avanzado: visualizar la
depuración de gdb con código VS básicamente puede satisfacer la mayoría de las necesidades
pero no puede visualizar el punto de interrupción. Es inconveniente
usar el código vs para depurar como Visual Studio.
== Nota : Todavía necesita compilar mfixsolver ==

### 1 Preparación: Instale un complemento para
descargar un código visual de estudio

Busque el complemento en la pestaña de expansión a la izquierda

== Instalar un complemento llamado morden fortran ==== Instalar un complemento
llamado C / C ++
==== Instalar un complemento llamado fortran breakpoint ==

¡También puede instalar el complemento chino, que es una localización de VS CODE
! [Inserte la descripción de la imagen aquí] (https://img-blog.csdnimg.cn/20200421151000815.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk, shadow_10, text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk0MDMxNA ==, size_16, color_FFFFFF, t_70)


### 2 ¡Configure launch.json para
hacer clic en el botón de depuración en la barra lateral izquierda, luego haga clic en el engranaje pequeño y finalmente haga clic en C ++ (GDB / LLDB)
como se muestra
en la imagen! [Inserte la descripción de la imagen aquí] (https: //imgconvert.csdnimg. cn / aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy84NDY1NzMxLTBiNzdmNjIwNjE4Y2JhZmMucG5n? image-os-proceso)

== Después de eso, el archivo launch.json aparecerá en su carpeta .vscode (puede eliminar este archivo en cualquier momento si la configuración es incorrecta y luego volver a operar) == El
contenido del archivo es
`` `javascript
{
// Use IntelliSense para comprender los atributos relacionados.
// Desplácese para ver la descripción de las propiedades existentes.
// Para obtener más información, visite: https://go.microsoft.com/fwlink/?linkid=830387
"versión": "0.2.0",
"configuraciones": [
{
"nombre": "(gdb ) Inicio ",
" tipo ":" cppdbg ",
" solicitud ":" lanzamiento ",
" programa ":" Ingrese el nombre del programa, por ejemplo $ {workspaceFolder} /a.out ",
" args ": [],
" stopAtEntry " : false,
"cwd": "$ {workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode":




"ignoreFailures": true
}
]
}
]
}
`` `
El
"programa ":" Introducir el nombre del programa, por ejemplo, $ {} workspaceFolder /a.out",
la posición de la segunda fila cotizaciones reemplazar su posición (mfixsolver Ruta completa) Por
ejemplo, el mío es
/ home / cl / MFiX_Cases / git_sync / Yin_0413_git_sync_case / mfixsolver

stopAtEntry se puede cambiar a verdadero, lo que significa hacer una pausa después de ingresar al programa.
Este es el launch.json modificado

`` `javascript
{
// Use IntelliSense para comprender las propiedades relacionadas.
// Desplácese para ver la descripción de las propiedades existentes.
// Para obtener más información, visite: https://go.microsoft.com/fwlink/?linkid=830387
"versión": "0.2.0",
"configuraciones": [
{
"nombre": "(gdb ) Inicio ",
" tipo ":" cppdbg ",
" solicitud ":" lanzamiento ",
" programa ":" $ {workspaceFolder} / mfixsolver ",
" args ": [],
" stopAtEntry ": verdadero,
" cwd ": "$ {workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"






}
`` `


### 3 Ejecutar y depurar
Presione F5 para ejecutar y depurar, ¡
aparecerá una pequeña caja de herramientas para la depuración en la esquina superior derecha
! [Inserte la descripción de la imagen aquí] (https://img-blog.csdnimg.cn/20200421003230396.png)
paso a paso (F10) significa no ingresar subrutinas / funciones,
F11 es ingresar cada subrutina, y quedarse
sin oración por oración es saltar fuera de la subrutina actual


¡Cómo romper el punto
! [Inserte la descripción de la imagen aquí] (https://img-blog.csdnimg.cn/20200421150520249.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Lymibz9G0n04Gx04Gxz0g04 color_FFFFFF, t_70)
Haga clic en el espacio en blanco a la izquierda del número de línea, aparecerá un pequeño punto rojo. ¿Es que el punto de interrupción
F5 corre al siguiente punto de interrupción?

### Resumen de error
#### Pregunta 1 de error
que hay un problema que hay que resolver, simplemente no se puede especificar error de archivo .mfx -f
`` `
****************** ************************************************** **
De: mfix.f
Error 1000: el archivo de datos de entrada no existe: mfix.dat Aborting
.
**************************** ******************************************
`` `` No
se ha encontrado nada hasta ahora Solución, pero cambie el nombre del archivo .mfx a mfix.dat.
Después de todo, es un nombre, no importa.

#### Problema 2 Elimine rápidamente
run_type = new al reiniciar, no debe haber ningún resultado que se haya producido, debe vaciar la carpeta cada vez que se ejecute

Es muy problemático eliminar manualmente un montón de cosas cada vez que comienza, use el código de terminal
``
rm -r * .RES * .SP * * .pvd * .csv VTK BACKUP_RES * .LOG * .OUT * .TXT * .vtu * .vtp
`` `

O defínalo en ~ / .bashrc,
copie el código en la última línea, luego reinicie el terminal, ejecute
`` `
alias mfixclean =" rm -r * .RES * .SP * * .pvd * .csv VTK BACKUP_RES * .LOG * .OUT * .TXT * .vtu * .vtp "
` "
para que cada vez que elimine solo necesite ejecutar mfixclean

#### Problema 3 Incapaz de
romper / ejecutar el siguiente paso La razón principal es que el complemento fortran breakpoint no está instalado

#### Pregunta 4 No se puede encontrar mfixsolver
vs código solo visualiza la depuración. Entonces todavía tengo que compilarlo yo mismo.

Necesita compilar mfixsolver
`` `bash
build_mfixsolver --batch" FCFLAGS = -g -O0 "-j 4``
`

Supongo que te gusta

Origin www.cnblogs.com/chunleili/p/gdb_debug_MFiX.html
Recomendado
Clasificación