Se utilizzi dbx per eseguire il debug del kernel sul tuo PC, questa importante guida per l’utente dovrebbe aiutarti.
Approvato: Fortect
Se il programma che ha copiato dinamicamente il kernel era legato a un kernel comuneLibrerie, è meglio eseguire il debug del file principale nello stesso ambiente di esecuzionein cui è stato creato. dbx ha già un supporto limitatoEsempio per il debug di l filesag “non conforme”, (per i file principaliCreato a livello di sistema con una diversa versione o posizione di Solaris®.Sistema operativo.
dbx non dovrebbe rilevare che stai puntando a determinate applicazioni Java.da un file kernel possibile che abbia codice nativo.
Eseguire il debug del file principale nello stesso ambiente operativo
Ora puoi anche eseguire il debug del file principale eseguendo molti dei debug < operazioni. usa il comando per kbd>se dbx è già in esecuzione:
Puoi sostituire - se il nome della scuola e dbx spesso cercano di estrarre il nome del programma dall'elenco principale. dbx potrebbe non trovare l'unico eseguibile se viene specificato il percorso completo sostanzialmente non disponibilenel file di base. Se dbx non riesce a trovare l'eseguibile,Includi l'intero percorso verso il binario se devi assicurarti che dbx Carica il file del kernel.
Se questo particolare file del kernel non si trova nella directory corrente, puoi usare il tuoTitoli del percorso (ad esempio, / tmp / body ).
Usa l'handle dove (vedi il comando dove ) per determinare esattamente dove era in esecuzione il dispositivo quando è stato effettivamente svuotato.Di base.
Durante il debug di un file del kernel, puoi anche valutare intervalli e semplici espressioni.per vedere i valori che gli sono rimasti dopo che il programma è andato in crash, ma non puoivalutare le espressioni in cui genera i registri delle funzioni. Non puoi fare un passo disponibile o un singolo suggerimento?Punti di controllo.
Se il tuo file principale è troncato
Se sei preoccupato per il download dell'elenco principale, assicurati di avere un troncatoFile di base. Quando la dimensione massima consentita per i motori di report è sempre stata impostata su un valore troppo piccoloSe il file del kernel è stato creato senza rischi, dbx non sarà predisposto per leggerlo.di conseguenza, il file basic viene ridotto. Nella shell C, qualcuno imposta il massimo consentitoIndica la lunghezza del file noto usando il limite (vedi ogni pagina man di limite (1)). Nella shell Bourne e korn, di solito si usa la richiesta ulimit (vedere la pagina man top (1)). PuoiModificare qualsiasi per quanto riguarda i nostri limiti di dimensione del file di base nel file shell più adatto, risorsa di avviofile, esegui in aggiunta, riavvia successivamente il progla ramma che ha generato, dico, il file principaleper creare un file imperativo completo.
Se il file principale fa parte e il segmento dello stack è attualmente mancante, alloraNon è possibile ottenere ulteriori consigli sulla traccia dello stack. Quando vengono lette le informazioni del linkermanca, quindi menzionare particolare perché loadobjects non è disponibile. In questo contenzioso, turicevi un bel messaggio di errore su librtld_db.so che non si inizializza sempre.Se non c'è un elenco LWP, non ci sono informazioni sul nastro principale, informazioni,o sono disponibili le informazioni di traccia dello specifico lwp-bund, quando esegui ti imbatterai nel comando dove ,Riceverai un eccellente messaggio di errore che indica che il programma era decisamente "attivo".
Eseguire il debug di un file del kernel non conforme
A volte il file numero uno viene creato da tutti sul metodo (sull'host principale) e tudesidera recuperare il file principale su un altro dispositivo (host dbx )eseguire il debug. Tuttavia, durante questa operazione, molti sono due problemi con le librerie.quindi:
-
Librerie condivise utilizzate dal programma con l'host enormela tua libreria locale potrebbe essere diversa da qualsiasi libreria host dbx. Sii un vero gruppo alla finePer le tracce che interessano le librerie, vuoi creare positivamente quelle librerie originalisolitamente disponibile su dbx-host. Usa
-
Librerie di sistema dbx in o usr / lib per comprendere informazioni sull'implementazione, i loro linker di runtimee una libreria di thread sul sistema di una persona. Potrebbe anche essere necessario implorare questoLibrerie di base del sistema host in modo che dbx possa capireun linker di runtime di strutture di database di computer e strutture di dati di flusso.
Anche le raccolte di convenienza e le librerie di sistema possono cambiare a causa delle correzioni.come importanti aggiornamenti al particolare ambiente operativo Solaris, rendendo questo problema anche considerevolmente serio.si verificano sullo stesso host se, per luogo, la patch effettiva è stata installata dopo tutto il kernelIl file è stato compilato, ma in precedenza si trovava in dbx nel tuo kernel.File.
dbx potrebbe probabilmente visualizzare un altro errore o l'errore di utilizzoMessaggi durante il caricamento del prossimo file kernel "incomprensibile":
Risolti problemi con le librerie condivise durante
Per risolvere problemi di libreria ed eseguire il debug di divertenti "incompatibilità"File di base
Imposta la variabile atmosfera dbx core_lo_pathmap su su .
Usa una delle nostre istruzioni pathmap per indicare doveDi solito ci sono librerie di ripristino dati dbx per il file principale.
Usa il comando debug per quanto riguarda il debug efile di base del programma.
Ad esempio, se la sezione radicel'host principale che devi ricevere è stato esportato tramite NFS e può rimanere accessibile tramite / net / core-host e sulla macchina appare dbx master, devi fare quanto segueComandi che aiuteranno a lubrificare il programma prog e ogni programma principale prog file.core per quanto riguarda il debug:
(dbx) core_lo_pathmap allegato a (dbx) Percorso della mappa / usr - net / core-host / usr (dbx) Pathmap/appstuff/net/core-host per ogni appstuff (dbx) programma di debug prog.core
Se una persona non sta esportando l'intera sezione root relativa all'host principale, ne avrai bisogno di una contemporanea.Copia le librerie manualmente. Non vuoi che tu possa ricreare collegamenti simbolici. (AAd esempio, potresti voler non collegare libc from.so per avvisarti con libc.so.1 ; Basta rendere favorevole libc.so.1 è disponibile.)
Cose da ricordare
Adotta un approccio intelligente durante il debug di un file principale non conforme:
-
Il legame di comando pathmap non riconoscepathmap per richiedere '/', quindi non puoi usare la parola di comando specifica:
Pathmap //net/core-host
-
Modalità argomento singolo per alcuni comandi plan map non funziona con i percorsi loadobject, accetta davvero entrambi gli argomenti dal percorsomodalità verso.
-
Il debug di uno dai nostri file principali probabilmente funziona meglio se qualsiasi host dbxo ha le stesse prestazioni, forse più recenti, dell'ambiente operativo Solariscome primario, anche se questo potrebbe non essere sempre necessario.
Approvato: Fortect
Fortect è lo strumento di riparazione PC più popolare ed efficace al mondo. Milioni di persone si affidano a milioni di persone per mantenere i loro sistemi in esecuzione veloci, fluidi e privi di errori. Grazie alla sua semplice interfaccia utente e al potente motore di scansione, Fortect trova e risolve rapidamente un'ampia gamma di problemi di Windows, dall'instabilità del sistema e problemi di sicurezza alla gestione della memoria e ai colli di bottiglia delle prestazioni.
- 1. Scarica Fortect e installalo sul tuo computer
- 2. Avvia il programma e fai clic su "Scansione"
- 3. Fai clic su "Ripara" per risolvere eventuali problemi rilevati
Potrebbe essere necessario il seguente sistema nella tua biblioteca locale:
-
Per collegare le lezioni:
/usr/lib/ld.so.1
/usr/lib/librtld_db.so.1
/usr/lib/64/ld.so.1
/usr/lib/64/librtld_db.so.1
-
Per la libreria di streaming come da thread di implementazione della lib di voi:
/usr/lib/libthread_db.so.1
/usr/lib/64/libthread_db.so.1
/usr/lib/lwp/libthread_db.so.1
/usr/lib/lwp/64/libthread_db.so.1
Applica solo il software
per ogni usr / lib / lwp se esegui spesso dbx da un ambiente operativo Solaris 8 e fallo solo seIn alternativa, puoi indossare la libreria libthread .
tuLe unità a 64 bit di solito richiedono raccolte xxx _db.so se dbx supporta al massimo i tipi a 64 bit.Versione del sistema operativo Solaris da questo sistema, la libreria locale è stata caricata e ancora in usocome parte insieme a dbx , non come parte del programma focalizzato.
Le librerie
ld.so.1 sono in realtà l'obiettivo dell'immagine di baseper lo studio di ricerca libc.so file o altra libreria, quindi i proprietari necessitano della libreria a 32 bit ld.so.1 o della libreria a 64 bit ld. una persona del genere. io negoziocorrisponde al programma che ha creato il sistema del file.
-
Se stai cercando un principio significativo
Includere la variabile di stato dbx core_lo_pathmap. Usa il comando my pathmap time per dire a dbx dove usare la libreria locale corretta per il file principale. Usa il debug per caricare il tuo programma e il file del kernel.
Durante l'esecuzione, premere Ctrl + per forzare un core dump. Ora che vedrai il file principale nella directory di qualcun altro in cui ti trovi. Poiché non includiamo mai un eseguibile con simboli di debug da fare, apriamo semplicemente il file principale per quanto riguarda gdb invece dell'eseguibile con simboli + file principale.
Assicurati che il binario privato sia compilato con i simboli di debug.definisci ulimit e anche il kernel. core_pattern è corretto.eseguire il programma.apri il loro dump con gdb, carica le icone e vai bt.Prova a scoprire cosa è successo esattamente!