Skip to content

Instantly share code, notes, and snippets.

@taozuhong
Last active January 18, 2021 04:45
Show Gist options
  • Save taozuhong/cc2fb375e3a39dc94479a9411b6f11e7 to your computer and use it in GitHub Desktop.
Save taozuhong/cc2fb375e3a39dc94479a9411b6f11e7 to your computer and use it in GitHub Desktop.
libbacktrace Vala binding
```vala
[CCode (cprefix = "BACKTRACE_", lower_case_cprefix = "BACKTRACE_", cheader_filename = "backtrace.h,backtrace-supported.h")]
namespace Backtrace {
public const int SUPPORTED;
public const int USES_MALLOC;
public const int SUPPORTS_THREADS;
public const int SUPPORTS_DATA;
[CCode (cname = "backtrace_error_callback", has_target = false)]
public delegate void ErrorCallback (void* data, string msg, int errnum);
[CCode (cname = "backtrace_full_callback", has_target = false)]
public delegate int FullCallback (void* data, uintptr pc, string? filename, int lineno, string function);
[CCode (cname = "backtrace_simple_callback", has_target = false)]
public delegate int SimpleCallback (void* data, uintptr pc);
[CCode (cname = "backtrace_syminfo_callback", has_target = false)]
public delegate void SyminfoCallback (void* data, uintptr pc, string symname, uintptr symval, uintptr symsize);
[Compact]
[CCode (cname = "struct backtrace_state", cprefix = "backtrace_", has_destroy_function = false)]
public class State {
[CCode (cname = "backtrace_create_state")]
public State (string filename, int threaded, ErrorCallback error_callback, void* data);
[CCode (instance_pos = 0)]
public int full(int skip, FullCallback callback, ErrorCallback error_callback, void* data);
[CCode (instance_pos = 0)]
public int simple (int skip, SimpleCallback callback, ErrorCallback error_callback, void* data);
[CCode (instance_pos = 0)]
public void print (int skip, GLib.FileStream file = GLib.stderr);
[CCode (instance_pos = 0)]
public int pcinfo (uintptr pc, FullCallback callback, ErrorCallback error_callback, void* data);
[CCode (instance_pos = 0)]
public int syminfo (uintptr addr, SyminfoCallback callback, ErrorCallback error_callback, void* data);
}
}
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment