Skocz do zawartości
Alfer

VS 2017 debugowanie dll w C++

Rekomendowane odpowiedzi

Uszanowanie

 

Jest tak. Mam bibliotekę w C++. Jakimś cudem po dwóch dniach udało mi się ją skompilować do debugowania pod VS 2017.

Ustawiłem aplikację nadrzędna którą wywołuje ową bibliotekę.

Ustawiłem sobie punkt zatrzymania.

Uruchamiam debugowanie.

Oczywiście nie zatrzymuje się na punkcie zatrzymania.

Kropka przy tym punkcie zmieniała się z wypełnionej na pusty okrąg z wykrzyknikiem i wielce mówiącym komunikatem

 

"Punkt przerwania nie zostanie teraz trafiony. Nie załadowano symboli dla tego dokumentu"

 

Mnie za to jednak zaraz coś trafi. To niech załaduje te symbole, chyba to logiczne, że skoro ustawiam punkt zatrzymania to skoro są potrzebne jakieś symbole to niech je sobie załaduje.

 

Pytanie:

 

Gdzie trzeba coś ustawić żeby owe mityczne symbole się załadowały?

 

-alfer

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Powinno automatyczne czytać symbole gdy pdb jest obok dll.

 

Otwórz sobie widok modułów, prawoklik na dll i wybierz ładowanie symboli.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ale debugujesz i kompilujesz w trybie "debug"

nie wiadomo czy masz włączone generowanie symboli

 

a tak na marginesie to co to za biblioteka? cos open source?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Powinno automatyczne czytać symbole gdy pdb jest obok dll.

 

Otwórz sobie widok modułów, prawoklik na dll i wybierz ładowanie symboli.

 

Nie wiem co to widok modułów … ale ...

 

zlokalizowałem pdb i tu sie okazało, że sobie ustawiłem wyjściowy plik na s2.dll a ten wynalazek zrobił z tego s2.dll.dll, s2.dll.pdb, …. zmieniłem, teraz jest s2 i mam s2.dll i s2.pdb no i jest poprawa bo nie czepia się, że symbole niezaładowane, natomiast jakoś do punktu zatrzymania (pierwszy wiersz funkcji nie dochodzi). Ale najpierw zbadam exe'ka jak to tam wygląda. Mam jeszcze wątpliwości np. do tego jak powinienem wyrównywać zmienne.

 

dzięki za wsparcie … i jak szybko

-alfer

 

ale debugujesz i kompilujesz w trybie "debug"

nie wiadomo czy masz włączone generowanie symboli

 

a tak na marginesie to co to za biblioteka? cos open source?

 

Tak tryb debug.

 

Biblioteka to dzieło mojego kolegi.

 

-mh

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie wiem co to widok modułów … ale ...

 

zlokalizowałem pdb i tu sie okazało, że sobie ustawiłem wyjściowy plik na s2.dll a ten wynalazek zrobił z tego s2.dll.dll, s2.dll.pdb, …. zmieniłem, teraz jest s2 i mam s2.dll i s2.pdb no i jest poprawa bo nie czepia się, że symbole niezaładowane, natomiast jakoś do punktu zatrzymania (pierwszy wiersz funkcji nie dochodzi). Ale najpierw zbadam exe'ka jak to tam wygląda. Mam jeszcze wątpliwości np. do tego jak powinienem wyrównywać zmienne.

nazwę i rozszerzenie można definiować oddzielnie

pading lepiej zostaw taki jak ustawia kompilator, no chyba że chcesz go się całkowicie pozbyć

"wynalazek"?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dręczę temat dalej

 

Wyszło mi, że nie eksportuje funkcji ale sprawdzam dumpbin i funkcje są ale mają podkreślenie na początku a zadeklarowane są jak niżej i nie widzę, tam, żadnego podkreślenia w nazwach funkcji. Ja rozumiem, że VS 2017 wie o wiele lepiej niż ja, jak się powinna nazywać moja funkcja, ale bardzo chciałbym się pozbyć tego podkreślenia.

 

Z góry dziękuję za sugestie

-alfer

 

 

extern "C" __declspec (dllexport) void __stdcall evDefExt_Ctrl( void )

{

} ;

 

// ------------------------------------------------------------------

// Wywolanie procedury 1 (glonej)

 

extern "C" __declspec (dllexport) void __stdcall evDefExt_Run(

tsDefExt_G const * zcqG ) // Struktura glowna

 

{

 

….

 

 

 

Dump of file s2.dll

 

File Type: DLL

 

Section contains the following exports for szklo.dll

 

00000000 characteristics

FFFFFFFF time date stamp

0.00 version

1 ordinal base

2 number of functions

2 number of names

 

ordinal hint RVA name

 

1 0 0001128A _evDefExt_Ctrl@0 = @ILT+645(_evDefExt_Ctrl@0)

2 1 00011483 _evDefExt_Run@4 = @ILT+1150(_evDefExt_Run@4)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

mój drogi to nie ma nic wspólnego z Visual C++

pewnie jeszcze byś chciał pozbyć się @0 z końca symbolu :P

to jest dekorowanie nazw standardowe dla języka C

jak zobaczysz kiedyś dekoracje nazw dla C++ w GCC lub VC to dopiero się zdziwisz :D

 

 

czy w prototypach funkcji używanych w "exe'ku" jest extern "C" i __stdcall (__declspec (dllimport))

Import into an application using __declspec(dllimport)

 

ignorancja w tym temacie poraża ;)

 

Create and use your own Dynamic Link Library (C++)

DLL

 

a w ogóle to linkujesz te funkcje statycznie czy dynamicznie (LoadLibrary)?

 

tak na marginesie to kolega Ci utrudnił zadanie maksymalnie jak mógł :P

Edytowane przez Namonaki

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

mój drogi to nie ma nic wspólnego z Visual C++

pewnie jeszcze byś chciał pozbyć się @0 z końca symbolu :P

to jest dekorowanie nazw standardowe dla języka C

jak zobaczysz kiedyś dekoracje nazw dla C++ w GCC lub VC to dopiero się zdziwisz :D

 

 

czy w prototypach funkcji używanych w "exe'ku" jest extern "C" i __stdcall (__declspec (dllimport))

https://docs.microsoft.com/pl-pl/cpp/build/importing-into-an-application-using-declspec-dllimport?view=vs-2019

 

ignorancja w tym temacie poraża ;)

 

Ha! Gdyby EXE był w C++ to może i by było tylko, że EXE jest w Delphi … tak żeby było łatwiej.

 

a tam jest:

 

LocStr := 'S2.DLL';

FDllHandle := LoadLibrary(PChar(LocStr));

if FDllHandle <> 0 then

begin

@evDefExt_Ctrl := GetProcAddress(FDllHandle, 'evDefExt_Ctrl');

@evDefExt_Run_ := GetProcAddress(FDllHandle, 'evDefExt_Run');

end

 

zadeklarowane jako:

 

TevDefExt_Ctrl = procedure; stdcall;

TevDefExt_Run_ = procedure(ADefExt_G_: psDefExt_G); stdcall;

 

 

co prawda w Delphi już też zaczynają wprowadzać "dekoracje". "Lepsze jest wrogiem dobrego" ale jak rozumiem wszystko to jest dla mojego dobra.

 

 

Zmieniłem na nazwy an te z podkreśleniami i małpami i zadziałało

 

Ale czy przypadkiem w wersji release coś się nie zmienia?

 

-alfer

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

nic nie powiedziałeś że to jest Object Pascal :P

 

co prawda ostatni raz jak pisałem cos w Delphi jeszcze za czasów rozdawania darmowych licencji Borlanda (po co Oni to sprzedali ?) ale przynajmniej FPC przy definiowaniu unitu pozwala na extern'owanie funkcji z pod dowolnej nazwy

 

generalnie to da się pozbyć podkreśl-inka za pomocą "Pliku definicji modułu (.Def)" https://docs.microsoft.com/pl-pl/cpp/build/reference/module-definition-dot-def-files?view=vs-2019

EXPORTS
  _LoadLibrary=LoadLibrary

 

https://docs.microsoft.com/pl-pl/cpp/build/reference/exports?view=vs-2019

 

ale @ i cyferki po niej są częścią konwencji wywołań stdcall (__stdcall) [nomen omen zwane pascal call] wiec należało by powrócić do cdecl (__cdecl)

na marginesie to Embarcadero rozdaje darmowe licencje uczelniom czy firma płaci są IDE?

Edytowane przez Namonaki

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

nic nie powiedziałeś że to jest Object Pascal :P

 

na marginesie to Embarcadero rozdaje darmowe licencje uczelniom czy firma płaci są IDE?

 

Jeśli pytanie brzmi "Czy firma płaci za IDE?" to odpowiedź brzmi "Firma płaci jak za zboże".

 

Nie wiem czy teraz jeszcze tak jest, ale można było pobrać za darmo całe środowisko i robić co się chce nawet komercyjnie byle nie przekroczyć $1000 przychodu z tego tytułu. (Wziąłem to z głowy czyli z niczego).

 

Czasami jednak mnie obezwładniają. Ostatnio spreparowałem serwer REST, niby działa tylko od czasu do czasu się wysypie … no kurcze takie coś do komercyjnych zastosowań odpada … szkoda, bo to dla nich też kupa roboty, skoro już ludzie za to płacą to mogłoby jednak funkcjonować. I tak teraz myślę, co z tym zrobić? Testy są trudne bo błąd pojawia się raz na dwa tygodnie i nie potrafię go skojarzyć z czymkolwiek.

 

-alfer

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

  • Tematy

  • Odpowiedzi

    • No to jak ci ześrubowali, i to na stałe, to pierwszy etap leczenia bardzo szybki, byle się zagoiło po operacji. Prawie brak unieruchomienia, byle potem nabrać pełnej wytrzymałości kości. Porównywanie takiego złamania do stopy nie ma najmniejszego sensu. Tu masz jedną dużą kość, o niewielkiej ruchliwości. W stopie pełno drobnych, powiązanych ze sobą i wbrew pozorom sporej ruchliwości. To zupełnie inna mechanika, więc i gojenie będzie inne. Przy jeździe stopy nie przenoszą ciężaru ciała, chyba że bawi się w jakieś zjazdy, skoki itp. Pytanie czy tam gdzie było złamanie, czy tak ogólnie puchną nogi. W drugim przypadku, to pewnie kwestie krążeniowe.
    • „Polska gurom”. Ładnie wytrzymał.    O zmianach oficerów i mobilizacji nic nie wiadomo. Z jakiego powodu zostali usunięci, są tylko plotki że dostawali w łapę i dużo przepuszczali na zachód. Czy szła źle? No nie, bo od początku brali tylko w miarę przeszkolonych, ochotników i przeszkolonych. O mobilizacji (tej na mięsne wkładki) wiadomo dopiero od teraz, i to że rząd Ukrainy tej mobilizacji nie chciał podjąć wcześniej.    Każdy obrywa od artylerii i fabow, ale żadna jednostka nie oberwała na tyle by wyłączyć ją z frontu, czyli można wnioskować że straty są akceptowalne. Ukraińcy od dawna powtarzają, wolą przeszkolonych niż nie którzy mogą powodować to że cała kompania pójdzie do piachu. Azov na tyłach szkoli ludzi, część 47 też miała to robić.  O porzuceniu frontu słyszeliśmy na razie dwa razy, ostatnio świeża sprawa z 110 elementem brygady podczas rotacji oraz rotacji pod Soledarem, więc gdzie jeszcze uciekają niczym Rosjanie szturmują?    O załamaniu frontu mówili w momencie braku wsparcia z USA. Jak to się koreluje do mobilizacji? A no właśnie tak, że ludzi może i jest ale sprzętu brak. 
    • Cześć, trochę rzeczy mi się zalęgło przez jakiś czas i pora zrobić małą wyprz Dla labowiczów ceny do negocjacji. Dysk Western Digital 6TB NASware 3.0: https://www.olx.pl/d/oferta/western-digital-6tb-nasware-3-0-CID99-IDZROd1.html?bs=olx_pro_listing MiniPC Zotac ZBOX IQ01: https://www.olx.pl/d/oferta/minipc-zotac-zbox-iq01-intel-i7-4770t-CID99-IDZROPY.html?bs=olx_pro_listing MiniPC Zotac ZBOX nano ID67: https://www.olx.pl/d/oferta/minipc-zotac-zbox-nano-id67-CID99-IDZROsz.html?bs=olx_pro_listing HP J9803A 1810-24G: https://www.olx.pl/d/oferta/switch-hp-1810-24g-j9803a-CID99-IDZRNAA.html?bs=olx_pro_listing NAS Synology DS720+ razem z: HDD: 2x Seagate IronWolf 8TB NAS NVMe cache: 2x Samsung 970 EVO Plus 1TB https://www.olx.pl/d/oferta/synology-ds720-2x8tb-2x1tb-nvme-CID99-IDZRNpL.html?bs=olx_pro_listing Intel NUC  BXNUC10i7FNK2: https://www.olx.pl/d/oferta/intel-nuc-i7-10710u-6-rdzeni-32gb-ddr4-128gb-m2-nvme-ssd-nas-serwer-CID99-IDZRLU4.html?bs=olx_pro_listing 2x Raspberry Pi 3B v1.2 1GB RAM + obudowy: https://www.olx.pl/d/oferta/raspberry-pi-3b-v1-2-1gb-ram-CID99-IDZRLg7.html?bs=olx_pro_listing 2x Raspberry Pi 4B 4GB RAM + obudowy: https://www.olx.pl/d/oferta/2x-raspberry-pi-4b-4gb-ram-CID99-IDZRKs7.html?bs=olx_pro_listing     Na OLX włączony jest zakup z przesyłką, jak wspominałem - ceny są do negocjacji.   
    • @RimciRimci Ok, ale ja w tych wizjach nie widzę opcji "po okresie niedoli Polska dociąga do gospodarczego poziomu relatywnego bogactwa". Wracając do tego, co napisałeś: To wprowadza dysonans. Czy oznacza to że opcja atrakcyjna jest gorsza? No bo najwidoczniej nie jest lepsza.
    • Opisałem teoretyczny przypadek "co gdyby...". Dlatego mówię, że wychodzenie z Unii to mrzonki patrząc jaką pozycję na świecie ma Polska. Tym bardziej przy obecnej sytuacji geopolitycznej.    atrakcyjna = zadowalająca. Gdzie ja napisałeś "bardziej atrakcyjna"? No właśnie... Bardziej atrakcyjna to polski rząd musiałby mieć jakieś haki na Niemców 
  • Aktywni użytkownicy

×
×
  • Dodaj nową pozycję...