debuger i użycie dll

0

Witam
DelphiXE5
używam dll z zewnętrzengo systemu. Do niedawna wszytko śmigało. Dzisiaj musiałem coś zmienić i po uruchomieniu F9 debugera, kompiluje się i kończy działanie.
Zero błedów. nie działa żaden "breakpoint", tylko tworzy exe (build configurationa ustawiony na debuger) i tyle
Wygląda jakby działa w trybie "release" ale na pewno tak nie jest
exe działa bez problemów
wywalenie wywołania tej dll powoduje że wszytko działa normalnie, można debugować program.
Wiecie może co może być tego przyczyną i jak to obejść/rowiązać ??

0

przebuduj (nie przekompiluj) projekt i jak nie pomoże to napisz jeszcze raz ale trochę bardziej czytelnie, a najlepiej aj screena (okna IDE!) z odpalonym programem pod debuggerem i z widokiem na jakiś breakpoint

0

@abrakadaber: przebudowywałem nic nie pomogło. Nie da się odpalić go pod debuggerem. Naciskam F9 kompiluje się, ładuje biblioteki i koniec tak jak bym przerwał uruchamianie.
Co ciekawe jak uruchamiam exe i robię Attach process to działa. Jak dam Run without debugging też działa

0

Zainstaluj aplikację ponownie. Usuń wszystkie wpisy w rejestrze regedit. Są aplikace, które potrafią określić lokalizację plików w folderach systemowych z których korzysta aplikacja a zatem Delphi. @JarekZ co oznacza? "używam dll z zewnętrzengo systemu".

0
JarekZ napisał(a):

DelphiXE5

No właśnie...

używam dll z zewnętrzengo systemu.

Co to za DLL jest i jak go używasz?

Do niedawna wszytko śmigało. Dzisiaj musiałem coś zmienić i po uruchomieniu F9 debugera, kompiluje się i kończy działanie.
Zero błedów. nie działa żaden "breakpoint", tylko tworzy exe (build configurationa ustawiony na debuger) i tyle
Wygląda jakby działa w trybie "release" ale na pewno tak nie jest

To co piszę nie ma nic wspólnego z DLL, aczkolwiek... W Delphi IDE wszystko jest możliwe ;-)
Ale do brzegu;

To, że w Delphi ustawisz release czy debug jeszcze niewiele znaczy.
Wielokrotnie na własnej skórze przekonałem się, że to nic nie znaczy.

Wersja podstawowa:

  1. Otwierasz opcje projektu w IDE.
  2. Wybierasz Delphi compiler -> Compiling i wybierasz z Bulid confguration opcję Base
  3. Zaptaszasz w opcji Base wszystko co powinno być dla kompilacji Debug; czyli wszystko w sekcji Debug, ale w sekcji Code Generation wyłączasz Optimization.
  4. Wybierasz z Bulid confguration opcję Debug i upewniasz się, że żadna z opcji nie jest wytłuszczona (to oznacza że została nadpisana z Base), a jeśli jest to klikasz aż nie bedzie.
    Debug ma niejako dziedziczyć wszystkie opcje z Base.
  5. Wybierasz z Bulid confguration opcję Release i zaznaczasz Optimization, a odznaczasz wszystkie opcji z kategorii Debug.
  6. Zapisujesz zmiany.
  7. Klikasz prawym na projekcie i wybierasz Clean
  8. Zamykasz IDE
  9. Upewnij się czy po Clean nie masz nigdzie plików binarnych wyplutych przez kompilator (dcu, dcp. bpl, exe, itd.)
  10. Włączasz IDE
  11. Robisz Build projektu

I może zadziała...
A jeśli nie zadziała, to:

  1. Wsuń wszystkie pliki projektu oprócz dpr - koniecznie usuń dproj i pochodne.
  2. Powtarzasz wszystkie kroki powyżej.

I znowu, może zadziała.
Mi zazwyczaj działa. Ale mam jeden projekt który za cholerę debugować się nie da.
Tzn. da się, ale nic nie podejrzysz w IDE - żadnej wartości zmiennej.
Zmieniam cokolwiek w ustawieniach projektu i mam "Internal Error"... kochane Delphi...

0

@wloochacz: ustawione mam tak jak piszesz, więc niestety to nie to.
Wspomniana dll to (brrrr) comarch cdn_api.dll podłączona statycznie.

Function XLLogin(LoginInfo:PXLLoginInfo;var Sesja:Longint):Longint; stdcall; external 'cdn_api.dll';

No i z nią jest jakaś "fuka" bo wgranie poprzedniej wersji comarchowej powoduje że działa tak jak powinno.
Może nawet to nie problem tego dll a tego co ona jeszcze "doładowywuje".

Może poprawią to co zepsute a może ten typ tak ma - taka odpowiedź dzisiaj padła ze strony help desku ;)

Ciekawe jest to, że brak błędu i tworzy exe (debug i release), które działają prawidłowo. Tak jak wcześniej pisałem na razie muszę niestety attach to process i wtedy działa debugowanie. Nie jest to super wygodne ale cóż.

0

Z góry zaznaczam, że nie mam już obecnie do czynienia z bibliotekami comarchu ale kilka lat temu osobiście miałem takie zdarzenie: delphi xe2, mam bibliotekę comarchu i opis do niej, czyli funkcjie ,parametry itp. Kompilacja programu ok, program uruchamia się, ale nie działa.. Kolega pod c# przeglądając te biblioteki zapodał, że opis który posiadałem do tek konkretnej funkcji i faktyczna jej deklaracja (typy parametrów) są różne.
Może podobnie, gdzieś tutaj leży problem?

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