Błąd przy debugowaniu pierwszego programu

0

Kod:
// First - pierwszy program w C++
#include <iostream>
#include <conio.h>
void main()
{
std::cout << "Hurra! Napisalem pierwszy program w C++!" << std::endl;
getch();
}

Po udanej kompilacji przechodzę do debugowania i wyskakuje mi następujący błąd:
"Nie można uruchomić programu "C"
/users/nazwa mojego użytkownika/source/repos/Projekt12/x64 (taki mam też system)/ Debug/Projekt12.exe
Nie można odnaleźć określonego pliku"

Dodam że mam wersję community 2019, oraz jestem totalnym noobem jak chodzi o pojęcia związane z programowaniem, gdyż się dopiero uczę

0

Masz jakiegoś antyvira? Niektóre kasują świeżo skompilowane pliki exe.

0

Mam nortona, myślisz że może on kasować pliki?
Edit: wyłączyłem antyvira i nic

0
Azarien napisał(a):

Masz jakiegoś antyvira? Niektóre kasują świeżo skompilowane pliki exe.
Wyłączyłem go i nic

0

Może go kompilowałeś w trybie release była by aplikacja w katalogu /Release/Projekt12.exe

Może poszukaj tego pliku Projekt12.exe

Może przerzuć się na GNU toolchain i z konsoli sobie skompiluj z symbolami debuggera g++ -g.
A potem debuguj przez gdb.

0
Szalony Programista napisał(a):

Może go kompilowałeś w trybie release była by aplikacja w katalogu /Release/Projekt12.exe

Może poszukaj tego pliku Projekt12.exe

Może przerzuć się na GNU toolchain i z konsoli sobie skompiluj z symbolami debuggera g++ -g.
A potem debuguj przez gdb.
Wyjaśnisz pojęcia GNU toolchain, gdb?

0

Ktoś wyjaśni pojęcia: GNU toolchain oraz gdb?

0

@Masny_Ted: GNU toolchain - tu chodzi o kompilator gcc albo g++, a gdb jest debuggerem.

0

@vtx dzięki

0

@vtx rozumiem że kolega z góry napisał by skompilować plik przez ten GNU toolchain i debugować przez gdb?
Jak tak to jak się kompiluje przez konsolę (i czy chodzi o cmd czy konsolę w visual-u)

0

@Masny_Ted: np. tak:

g++ projekt12.cpp

i powinieneś dostać wtedy plik wykonywalny - np. "a.out" - pod Linux-em, a pod Windows to nie wiem - nie używam :)
Z tym że headera "conio.h" nie uświadczysz standardowo pod Linuxem. Visuala nie znam, ale zapewne chodziło o konsolę Windows (cmd.exe?).

0

@vtx ok
Teraz tylko znaleźć komendy na kompilację

0

@Szalony Programista: pomożesz jak mam skompilować w konsoli?

0

@vtx czyli mam normalnie kompilować tylko że z użytkiem GNU toolchain?

0

A jest jakiś program zastępczy dla gdb tyle że na windowsa?

0

Zobacz to:
http://www.wingdb.com/wgDownload.htm

ale z góry mówię, że nie używałem.

0

@vtx dzięki

1

Możesz zostać przy Visualu bo tam będzie ci łatwiej debugować ma gui nakładkę na gdb albo swój debugger.
Gdb wymaga używania komend z konsoli, ale za to łatwiej się tam poruszać.

Powinieneś najpierw sprawdzić czy masz ścieżkę środowiskową PATH ustawioną na te binarki, wpisując po prostu w konsoli gcc albo g++.
Jak chcesz z konsoli korzystać to możesz albo użyć tych binarek co są z Visualem dostarczone.

Lub sobie po prostu zainstalować MinGW, Clang w windowsie.

Wiesz, że możesz sobie korzystać z linuxa pod windowsem jak zainstalujesz WSL.

Jak już odpalisz WSL - Windows subsystem for linux, to zainstaluj tam ubuntu, a potem w konsoli ubuntu wpisz apt install <nazwa czego potrzebujesz>. np. apt install build-essential
Menadżer sam pobierze wszystkie zależności.

gcc - kompilator do języka C
g++ - kompilator do języka C++
gcov - sprawdzanie pokrycia kodu.
gdb - debugger
make - narzędzie do automatycznej kompilacji

Pod linuxem działa też tui do gdb, które daje fajny podgląd na kod źródłowy debugowany, a także możesz językiem python debugować aplikacje uruchomiony wewnątrz dbg, możesz wystawić interface na zewnątrz i korzystać jak z interaktywnego pythona.

Musisz dostarczyć symbole debuggera do kompilowanej aplikacji wtedy możesz operować na zmiennych i nazwach funkcji wpisanych w programie.
czyli g++ -g projekt.cpp -o projekt.exe

Symbole debuggera zwierają ścieżki do kodów źródłowych i linie kodu do każdej linijki assemblera, a także nazwy symboli zmiennych i funkcji.

Ewentualnie na linuxie możesz łatwo zrobić swojego debuggera za pomocą syscalla ptrace.
Na windowsie jest też jakieś api adekwatne.

2

Chyba rozwiązane, problem okazał się jakiś dziwny typ projektu.

0

UWAGA! Rozwiązane

0

Co wy piszecie o używaniu debuggera, jak ziomek nie umie znaleźć swojej binarki? xD

1

@Masny_Ted:

Masny_Ted napisał(a):

Ktoś wyjaśni pojęcia: GNU toolchain oraz gdb?

GNU toolchain to jest zestaw narzędzi do budowania aplikacji. Np. cieśla ma pas, w którym jest młotek, gwoździe, wkrętarkę, etc. czyli wszystko co jest mu potrzebne do zbudowania domu, tak programista potrzebuje swojego "pasa z narzędziami", dzięki którym zbuduje aplikacje. Tutaj kilka najważniejszych:

  • cpp - preprocesor (automatyczny klepacz kodu, głównie wycina, wkleja i podstawia tekst), kompiluje do pliku .i (gcc -E)
  • cc1 lub cc1plus - kompilatory języka C i C++, zamienia kod C/C++ na instrukcje w asemblerze, plik wyjściowy .s (gcc -S)
  • as - asembler - zamienia kod asemblera na skompilowany plik obiektowy, pliki .o lub .obj (gcc -c)
  • ld - linker(konsolidator), łączy pliki obiektowe w jeden wykonywalny .out, .elf, .exe, etc. lub do biblioteki dynamicznej .so, .dll
  • objdump - wyświetla informacje o pliku obiektowym i wykonywalnym, może zrobić de-asemblacje, np. do pliku .lss
  • objcopy - przekształca pliki w obiektowe w inne, np. z .elf do .hex, który potem można np. wgrać do pamięci Flash w mikrokontrolerze,
  • ar - tworzy biblioteki statyczne, czyli grupę plików .o pakuje do jednego pliku .a lub .lib,
  • gdb - program do debugowania.
  • i wiele innych np. strip, nm, strings, readelf, size, ranlib, etc.

Całym procesem budowania aplikacji kieruje driver gcc lub g++, potocznie nazywany kompilatorem, choć nim tak naprawdę nie jest.

Inny producent narzędzi (Microsoft, Intel, etc.) może mieć to zorganizowane w inny sposób, powyższe odnosi się głównie do GNU GCC.

0

Zakończone, problem rozwiązany. Problemem był dziwny typ projektu

0

Co to znaczy "dziwny typ projektu"?

1 użytkowników online, w tym zalogowanych: 0, gości: 1