Método de depuración de C++ para omitir archivos de biblioteca

Método de depuración de C++ para omitir archivos de biblioteca

A veces, solo queremos depurar nuestro propio código al depurar el código C++, sin ingresar al archivo de la biblioteca. Por ejemplo, en el siguiente fragmento de código, queremos ejecutar at f()will step intodirectamente en el cuerpo de display()la función , pero desafortunadamente, hasta 2022, c ++ no admite muy bien la opción de depuración "Solo mi código".

#include "stdafx.h"
#include <functional>
#include <iostream>

void display() {
    
    
	std::cout << "Hello" << std::endl; // step into should go here
}

int main() {
    
    
	std::function<void()> f = &display;
	f(); // Step into here should go directly to "display()"
}

Actualmente, he encontrado las siguientes soluciones.

Solución 1: depuración con Visual Studio

Al usar Visual Studio para depurar el código C++, la opción "solo mi código" está habilitada de forma predeterminada, por lo que si está generando un programa de consola para la plataforma Windows, al ejecutar paso a paso se omitirá el archivo de la biblioteca de forma predeterminada.

Pero este método no es compatible con los proyectos Cmake de la computadora local.

Solución 2: Visual Studio + Cmake

Afortunadamente, hay una opción en Cmake para habilitar la compatibilidad con "Solo mi código" para el depurador de Visual Studio. Simplemente agregue la siguiente línea al archivo CmakeLists.txt.

set (CMAKE_VS_JUST_MY_CODE_DEBUGGING 1)

Sin embargo, este método solo admite proyectos Cmake en la computadora local. Si desea crear un proyecto Cmake en Linux remoto, todavía no es compatible.


Otros, hay una solución para [^1] desde el nivel de gdb, pero el efecto aún no es ideal.

Referencias

[^1] Omisión de la biblioteca C++ estándar durante la sesión de depuración en gdb (reversed.top)

[^2] Capacidad para depurar solo mi código (también conocido como Solo mi código): CPP-14618 (jetbrains.com)

Supongo que te gusta

Origin blog.csdn.net/aiyolo/article/details/128507553
Recomendado
Clasificación