Bevallom, eléggé ugatom ezt a témát és nem találom, milyen triviális hibát követek el, de guglizással semmire sem mentem. Atmel AVR környezetben használnám a ddd-t, az ide vágó Makefile rész így néz ki: (Bocs, nem tudom, hogyan kell a tab-okat jelölni, ________ van helyette)
ddd: gdbinit
________ddd --debugger "avr-gdb -x $(GDBINITFILE)"
gdbserver: gdbinit
________simulavr --device $(MCU) --gdbserver
gdbinit: $(GDBINITFILE)
$(GDBINITFILE): $(TRG)
________@echo "file $(TRG)" > $(GDBINITFILE)
________@echo "target remote localhost:1212" \
>> $(GDBINITFILE)
________@echo "load" >> $(GDBINITFILE)
________@echo "break main" >> $(GDBINITFILE)
________@echo "continue" >> $(GDBINITFILE)
________@echo
________@echo "Use 'avr-gdb -x $(GDBINITFILE)'"
A make ddd ezzel jön vissza:
localhost:1212: Kapcsolat elutasítva
Ha úgy indítom, hogy make gdbserver, akkor természetesen
Waiting on port 1212 for gdb client to connect...
a válasz és ha másik terminálablakban ráindítom a make ddd-t, akkor működik.
A fenti részletet a netről másoltam szolgai módon, copy/paste, de hiába böngészek mindenféle Makefile leírásokat, nem értem, nálam miért nem működik. Segícccccség :(((
- 1594 megtekintés
Hozzászólások
Szerintem a ddd függőségéhez fel kell venni a gdbservert is a gdbinit mellé
- A hozzászóláshoz be kell jelentkezni
vagy csak a gdbservert, az már úgy is függ a gdbinit-től.
- A hozzászóláshoz be kell jelentkezni
Mindkettőtök válaszát köszönöm, de még egy kis szájbarágást kérek. Hogyan néz ki a szintatktika? Nem akarok rajtatok élősködni, de most a Makefile lelkivilágára nem tudok kellő időt fordítani. Előre is köszönöm...
- A hozzászóláshoz be kell jelentkezni
Nem tudom, pontosan mik a parancsok, amiket ki akarsz adni.
make -n
végrehajtás helyett kiírja, hogy milyen parancsokat futtatna le; ez segíthet.
Megnézném, hogy a változók rendben vannak-e. Plusz a parancsban lehet hivatkozni a függőségre, ha kell (a kettőspont utáni dolgokra):
az első: $<
az összes: $+
Célra (a kettőspont előttire): $@
- A hozzászóláshoz be kell jelentkezni
A változók garantáltan rendben vannak, hiszen ha két részletben futtatom, akkor működik. A függőséget hogyan adom meg? Ez nem jó neki:
ddd: gdbserver $< > $@
ddd --debugger "avr-gdb -x $(GDBINITFILE)"
- A hozzászóláshoz be kell jelentkezni
A függőséget csak úgy, hogy
ezt_kell_csinalni: ebbol
________parancs
azaz
cél: függőség
________hogyan
Ekkor ha a ,,make ezt_kell_csinalni'' parancsot meghívod, megnézi, hogy van-e ,,ebbol'' nevű fájl (ez maga a függőség). Ha van, lefuttatja a parancsot. Ha nincs, előtte keres egy ,,ebbol:'' célt, és azt is megpróbálja megcsinálni hasonló módon - azaz rekurzív.
A fenti makrókat csak azért mondtam, hátha jól jönnek. A parancsba írhatod bele, ha kell. Helyettesítik a cél vagy a függőség nevét. A parancsba nem kerül bele automatikusan egyik sem.
Ha az a gond, hogy nem tudsz két célt indítani egy make-paranccsal, akkor ezt a formát javaslom:
.PHONY: a b
indul: a b
a: [valami]
________parancs
b: [valami]
________parancs
a ,,make indul'' parancs meg fogja hívni a-t is és b-t is. A .PHONY azt mondja, hogy az a és b célok nem kell hogy megjelenjenek fájlként; csak tisztán a make vezérlésére valók (ilyen szokott lenni az all, clean, stb).
Jobban nem tudok segíteni, amíg nem látom konkrétan, milyen parancsokat szeretnél kiadni (mert én meg AVR-t nem debugoltam még, bár néha szeretnék. :) ).
- A hozzászóláshoz be kell jelentkezni
Köszönöm az útmutatást. Ha szeretnél avr-rel foglalkozni és igényeled, elküldöm magánban a Makefile-t, nagyon komplexre sikerült összehozni, futás közben scriptezve magából a proci forrásokból szed össze minden szükséges információt. Csak ez a ddd dolgot nem tudtam összehozni...
- A hozzászóláshoz be kell jelentkezni
github? :)
- A hozzászóláshoz be kell jelentkezni