Sto cercando un modo per selezionare le sezioni e le regioni di memoria incluse in un core dump.
Le dimensioni del dump di core della mia applicazione sono di circa 30 GB, la maggior parte è in buffer preallocati di cui non ho nemmeno bisogno nel debug (e può essere azzerato in seguito). Tuttavia, poiché il dump è così grande, ci vuole troppo tempo perché l'applicazione finisca di schiantarsi e iniziare il recupero.
Qualcuno può pensare a un modo per selezionare in anticipo quali segmenti saranno nel core dump?
GrazieDump nucleo selettivo in Linux: come posso selezionare le sezioni di dumping?
risposta
Secondo il core(5)
pagina di manuale, è possibile impostare che mappature vengono scritti nel file core:
Dal kernel 2.6.23, il file /proc/PID/coredump_filter specifico per Linux può essere utilizzato per controllare quali segmenti di memoria vengono scritti nel file di dump di base in l'evento che un core dump è eseguito per il processo con l'ID processo corrispondente.
Il valore nel file è una maschera bit dei tipi di mappatura della memoria (vedere mmap (2)). Se nella maschera è impostato un bit, vengono scaricati i mapping di memoria del corrispondente tipo ; altrimenti sono non scaricati. I bit in questo file hanno il seguente significato:
bit 0 Dump anonymous private mappings. bit 1 Dump anonymous shared mappings. bit 2 Dump file-backed private mappings. bit 3 Dump file-backed shared mappings. bit 4 (since Linux 2.6.24) Dump ELF headers. bit 5 (since Linux 2.6.28) Dump private huge pages. bit 6 (since Linux 2.6.28) Dump shared huge pages.
Per impostazione predefinita, sono impostati i seguenti bit: 0, 1, 4 (se le CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS opzione di configurazione del kernel è abilitata), e 5. La il valore di questo file è visualizzato in esadecimale. (Il valore di default viene quindi visualizzato come 33.) Le pagine di I/O mappate in memoria come il frame buffer non vengono mai scaricate e le pagine di DSO virtuali vengono sempre scaricate, indipendentemente dal valore di coredump_filter .
...
Questo file è fornito solo se il kernel è stato costruito con l'opzione di configurazione CONFIG_ELF_CORE.
Non sono sicuro se è possibile impostare quale parte della memoria scaricare.
Da man 5 core
file su disco che contiene un'immagine della memoria del processo al momento della cessazione
Come opzione è possibile troncare file core utilizzando setrlimit
con un parametro RLIMIT_CORE
.
- 1. Dump nucleo "inspiegabile"
- 2. Attivare nucleo/crash dump programatically
- 3. Dump nucleo minimale (traccia stack + frame corrente solo)
- 4. Debugging in Linux mediante core dump
- 5. dump di debug del nucleo remoto di debug
- 6. Autorizzazioni di dumping Heap Java
- 7. Quali sono le sezioni critiche di gcc on linux alle sezioni critiche di Microsoft?
- 8. Come posso garantire che il mio programma Linux non produca core dump?
- 9. Dump core Linux senza processo di omissione
- 10. Le sezioni TableView diventano nascoste dopo le ricariche Sezioni
- 11. Come posso sfuggire in modo selettivo percentuale (%) nelle stringhe Python?
- 12. Come posso selezionare le righe per intervallo?
- 13. Visualizzazione di core dump
- 14. Come analizzare core dump
- 15. Dumping memory to file
- 16. Funzione di inoltro selettivo
- 17. Windbg - dumping System.Guid
- 18. JSLint - ignora le sezioni del codice
- 19. Come posso selezionare le righe in ordine inverso (mysql)
- 20. NSUserDefaults: dumping della struttura dello standard NSUserDefaultsUserDefaults
- 21. Come vengono evitate le corse IRQ condivise in Linux
- 22. Come decorare in modo selettivo elementi RecyclerView
- 23. Spazio tra le sezioni in UITableview
- 24. Dumping di multiprocessing.Queue in una lista
- 25. Interpolazione lungo le sezioni di immagine 2D
- 26. Come modificare l'altezza TRA le sezioni in GROUPED UITableView?
- 27. Come abilitare il core dump nel mio programma Linux C++
- 28. MongoDB aggregato progetto selettivo
- 29. IServiceProvider in ASP.NET Nucleo
- 30. ASP .NET Nucleo leggere le variabili d'ambiente
Grazie. Esattamente quello che stavo cercando. –