Re: [Vala] How to use vala Linux.backtrace?



Hello,

the main problem with your code is the declaration of the array which
should be an array of void pointers:
        void*[] array = new void*[10];

Here a snippet that works, but the are some other problems with the
bindings:

1) The length of strings can't be known by vala and foreach wouldn't work
2) The strings is not freed because is declared as unowned.


private static void print_backtrace () {
        void*[] array = new void*[10];

        int size = Linux.backtrace (array, 10);

        string[] strings = Linux.backtrace_symbols (array, size);
        for(int i=0; i< size; i++) {
                print ("(%d): %s\n", i, strings[i]);
        }

        /* this can't work because the array length in unknown by vala
        foreach (string trace in strings) {
            stdout.printf("%s\n", trace);
        }*/
}

HTH,
Andrea



On Wed, Nov 27, 2013 at 11:27 PM, Christian Johnson <_c_ mail com> wrote:

Hey!

I'm trying to print out stacktrace, Linux.backtrace and
Linux.backtrace_symbols look like they would work but them being part of
libc I can't seam to discover how to use them from vala. The GNU manual has
this example:

void *array[10];
size_t size;
char **strings;
size_t i;

size = backtrace (array, 10);
strings = backtrace_symbols (array, size);

printf ("Obtained %zd stack frames.\n", size);

for (i = 0; i < size; i++)
     printf ("%s\n", strings[i]);

free (strings);

So trying to convert this to vala:

void[] array = new void[10];
int size = Linux.backtrace (&array, 10);
string[] strings = Linux.backtrace_symbols (array, size);

foreach (string trace in strings) {
    stdout.printf("%s\n", trace);
}

This produces the fallow error:
*** Error in `valac': munmap_chunk(): invalid pointer: 0xb76d1069 ***


So...What am I doing wrong?

_______________________________________________
vala-list mailing list
vala-list gnome org
https://mail.gnome.org/mailman/listinfo/vala-list



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]