Ir ao conteúdo
  • Cadastre-se

C++ Windows 10x64 - Debugger C/C++ - usando MinGW(gdb) e LLVM(lldb)


MbR2XgD

Posts recomendados

  • Membro VIP

Pessoal beleza. 

Estou usando o MinGW e LLVM no Windows, ambos eu consigo compilar e executar o código sem problemas.
Mas estou tendo problemas com o "LLVM", quero debuggar o código, usar brakpoint, etc no "lldb". No MinGW
"gdb" funciona muito bem, mas o "lldb" não tive muito sucesso. Não entendi muito bem o "lldb", mas parece
que ele não debuga o código  diretamente, eu preciso linkar com o "gdb" do MinGW. Eu entendi que o formato
e saída o arquivo é DWARF para usar em VisualStudio entre outras IDE's para debuggar, ou seja, se eu tento
compilar usando "clang++" com opção "-g" do compilador, ele usa o formato DWARF por padrão, e não mostra
nenhuma saída. Encontrei uma opção no compilador "-fdebug-default-version=" que aceita somente DWARF,
que é o padrão. Segue a mensagem da linha de comando: 

arquivo debugtest.cpp

#include <iostream>
#include <string>

class myCode{
	public:
		void mycode_test(){
			std::cout << "testing..." << std::endl;
		}
}mycode;

int main(int argc, char** argv){
	mycode.mycode_test();
	return 0;
}


commandline:

debug>clang++ -g -o debugtest.exe debugtest.cpp -w
debug>lldb debugtest.exe
(lldb) target create "debugtest.exe"
Current executable set to 'C:\codes\debug\debugtest.exe' (x86_64).
(lldb) l
(lldb)                                               


O MinGW, não tenho nenhum problema. 

arquivo debugcode.c

debug>gcc -g -o debugcode debugcode.c -w
debug>gdb debugcode.exe
GNU gdb (GDB) 10.2
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-w64-mingw32".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from debugcode.exe...
(gdb) l 1,30
1
2       #include <stdio.h>
3       #include <stdlib.h>
4
5
6       void debugtest(){
7               printf("testing...");
8       }
9
10      int main(int argc, char** argv[]){
11
12              debugtest();
13
14              return 0;
15      }
(gdb)                                                 



 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@devair1010 um dos motivos é tamanho de arquivo e tempo de demora que o compilador leva,.
Não tenho nenhum problema em usar o gcc e/ou llvm, na verdade eu uso mais o Visual Studio, por causa do Unreal.
Não tenho a liberdade de escolher o compilador ou IDE, no caso do Unreal. As vezes eu preciso fazer uma simples
função ou criar uma classe fora do código que eu estou desenvolvendo, sem prejudicar meu código no Unreal, caso
encontre algum erro, é um dor de cabeça pra ficar achando o erro. as vezes tenho que começar tudo do zero.
outra coisa muito chata é Intellisense, cada tecla que eu pressiono, o Visual Studio fica processando um monte de
informações inútil, entre outras coisas. Posso desabilitar, mas acaba criando outros problemas no futuro. 
Visual Studio funciona assim "Mexe nada não!", que tudo funciona. É um dor de cabeça e um tempão pra ficar no
google pesquisando onde alterar ou restaurar por padrão tal função do Visual Studio. Outro problema que eu
encontrei no MinGW e no LLVM, foi o tamanho do arquivo no hora de compilar:

debug>clang++ -o debugtest_llvm.exe debugtest.cpp -w
debug>g++ -o debugtest_gcc debugtest.cpp -w

18/03/2022  11:56         2,882,201 debugtest_gcc.exe
18/03/2022  11:56           235,008 debugtest_llvm.exe


Eu preciso criar um programa externo fora do código do Unreal, e tem situações que se eu for ficar testando o código
dentro do Unreal, acaba demorando muito, fora o processamento, cada vez que eu tenho que alterar uma linha de código,
o Unreal compila o projeto inteiro. Tem coisas que eu posso fazer fora do Unreal que resolver mais rápido:

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
  • Membro VIP

Bom, o que eu vou fazer, é compilar com g++ usando debugger, encontrando todos os erros, vou terminar todo o projeto,
exportar todo o meu código em C++ para o LLVM, a parte que eu não conseguir, vou achar uma outra forma de inserir no
código para compilar no LLVM. Boa parte do código em C++, eu consigo compilar nos 2 compiladores. 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...