sto cercando di eseguire il debug di un'applicazione che è cross-compilato su un host di Windows per un target Linux.Come ottenere gdb su Linux per trovare il file di origine per il cross binario compilato su Windows
Il problema: Poiché la compilazione iniziale è in Windows, i percorsi del file di origine memorizzati nel file binario hanno il formato C:\Users\foo\project\...
. Sul target Linux ho messo i file sorgente sotto \home\foo\project\....
Per impostazione predefinita gdb non trova il file sorgente a causa del diverso percorso.
Quello che ho provato finora:
Usa "directory" comando gdb che invia un percorso esatto per il file sorgente .c nel sistema Linux di destinazione in cui si esegue il debug l'applicazione. Questo funziona ma sfortunatamente ci sono letteralmente centinaia di file quindi questa soluzione non è realistica.
Utilizzare il comando
set substitute-path C:\\Users\\foo\\project /home/foo/project
avere gdb sostituto tutti i prefissi. Notare che lo\\
sembra necessario in modo cheshow substitute-path
registri la stringa corretta. Questo purtroppo non funziona. La mia ipotesi è che il comando del percorso sostitutivo non gestisca i percorsi in stile ms-dos.provato che separa le informazioni di debug fuori in un file .debug separato (vedi How to generate gcc debug symbol outside the build target?) e quindi utilizzando debugedit per modificare i percorsi con il comando
debugedit --base-dir=C:\Users\foo --dest-dir=/home/foo project.debug
. Purtroppo anche questo non funziona.debugedit
sembra funzionare bene se il percorso esistente è tutto simile a UNIX/Linux ma sembra non funzionare con i percorsi di stile ms-dos.
Ho guardato intorno StackOverflow e mentre ci sono argomenti simili non riesco a trovare nulla che mi aiuterà. Gradirei davvero qualche suggerimento/aiuto. Mi rendo conto che compilare cross da Windows è un modo molto approssimativo, ma non posso evitarlo per il momento.
Grazie