Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/taskdump/taskdump.c

    rdafa2d04 r1ccafee  
    4040#include <udebug.h>
    4141#include <task.h>
    42 #include <as.h>
     42#include <kernel/mm/as.h>
    4343#include <sys/types.h>
    4444#include <sys/typefmt.h>
     
    4949
    5050#include <symtab.h>
    51 #include <elf_core.h>
    5251#include <stacktrace.h>
    5352
     
    5958static int phoneid;
    6059static task_id_t task_id;
    61 static bool write_core_file;
    62 static char *core_file_name;
     60static bool dump_memory;
    6361static char *app_name;
    6462static symtab_t *app_symtab;
     
    8280        int rc;
    8381
     82        /*
     83         * FIXME: The stdio module cannot currently detect whether we are
     84         * writing to a console or file. This workaround make file output
     85         * faster.
     86         */
     87        setvbuf(stdout, NULL, _IOFBF, 32768);
     88
    8489        printf("Task Dump Utility\n");
    85         write_core_file = false;
     90        dump_memory = false;
    8691
    8792        if (parse_args(argc, argv) < 0)
     
    167172                                        return -1;
    168173                                }
    169                         } else if (arg[1] == 'c' && arg[2] == '\0') {
    170                                 write_core_file = true;
    171 
    172                                 --argc; ++argv;
    173                                 core_file_name = *argv;
     174                        } else if (arg[1] == 'm' && arg[2] == '\0') {
     175                                dump_memory = true;
    174176                        } else {
    175177                                printf("Uknown option '%s'\n", arg[0]);
     
    201203static void print_syntax(void)
    202204{
    203         printf("Syntax: taskdump [-c <core_file>] -t <task_id>\n");
    204         printf("\t-c <core_file_id>\tName of core file to write.\n");
     205        printf("Syntax: taskdump [-m] -t <task_id>\n");
     206        printf("\t-m\tDump memory area contents.\n");
    205207        printf("\t-t <task_id>\tWhich task to dump.\n");
    206208}
     
    295297                    (ainfo_buf[i].flags & AS_AREA_CACHEABLE) ? 'C' : '-',
    296298                    ainfo_buf[i].start_addr, ainfo_buf[i].size);
     299
     300                if (dump_memory) {
     301                        putchar('\n');
     302                        area_dump(&ainfo_buf[i]);
     303                        putchar('\n');
     304                }
    297305        }
    298306
    299307        putchar('\n');
    300 
    301         if (write_core_file) {
    302                 printf("Writing core file '%s'\n", core_file_name);
    303                 rc = elf_core_save(core_file_name, ainfo_buf, n_areas, phoneid);
    304                 if (rc != EOK) {
    305                         printf("Failed writing core file.\n");
    306                         return EIO;
    307                 }
    308         }
    309308
    310309        free(ainfo_buf);
Note: See TracChangeset for help on using the changeset viewer.