mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* vm_dump.c (HAVE_BACKTRACE): fallback to 0.
* vm_dump.c (rb_vm_bugreport): show "Other runtime information" header only when available. * vm_dump.c (rb_vm_bugreport): get rid of modifying the content of VM directly. * vm_dump.c (rb_vm_bugreport): check if vm is non-null. Pointed out by Ikegami Daisuke <ikegami.da@gmail.com>. Thank you. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33705 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0d746627af
commit
05e7354864
2 changed files with 40 additions and 8 deletions
14
ChangeLog
14
ChangeLog
|
@ -1,3 +1,17 @@
|
|||
Fri Nov 11 17:09:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* vm_dump.c (HAVE_BACKTRACE): fallback to 0.
|
||||
|
||||
* vm_dump.c (rb_vm_bugreport): show "Other runtime information"
|
||||
header only when available.
|
||||
|
||||
* vm_dump.c (rb_vm_bugreport): get rid of modifying the content of
|
||||
VM directly.
|
||||
|
||||
* vm_dump.c (rb_vm_bugreport): check if vm is non-null.
|
||||
Pointed out by Ikegami Daisuke <ikegami.da@gmail.com>.
|
||||
Thank you.
|
||||
|
||||
Fri Nov 11 12:36:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
|
||||
|
||||
* io.c (pipe_open): Remove fflush(stdin). it's no effect.
|
||||
|
|
34
vm_dump.c
34
vm_dump.c
|
@ -593,6 +593,9 @@ bugreport_backtrace(void *arg, VALUE file, int line, VALUE method)
|
|||
#if defined(__FreeBSD__) && defined(__OPTIMIZE__)
|
||||
#undef HAVE_BACKTRACE
|
||||
#endif
|
||||
#ifndef HAVE_BACKTRACE
|
||||
#define HAVE_BACKTRACE 0
|
||||
#endif
|
||||
#if HAVE_BACKTRACE
|
||||
# include <execinfo.h>
|
||||
#elif defined(_WIN32)
|
||||
|
@ -774,7 +777,15 @@ dump_thread(void *arg)
|
|||
void
|
||||
rb_vm_bugreport(void)
|
||||
{
|
||||
rb_vm_t *vm = GET_VM();
|
||||
#ifdef __linux__
|
||||
# define PROC_MAPS_NAME "/proc/self/maps"
|
||||
#endif
|
||||
#ifdef PROC_MAPS_NAME
|
||||
enum {other_runtime_info = 1};
|
||||
#else
|
||||
enum {other_runtime_info = 0};
|
||||
#endif
|
||||
const rb_vm_t *const vm = GET_VM();
|
||||
if (vm) {
|
||||
int i = 0;
|
||||
SDR();
|
||||
|
@ -823,22 +834,29 @@ rb_vm_bugreport(void)
|
|||
fprintf(stderr, "\n");
|
||||
#endif /* HAVE_BACKTRACE */
|
||||
|
||||
fprintf(stderr, "-- Other runtime information "
|
||||
"-----------------------------------------------\n\n");
|
||||
{
|
||||
if (other_runtime_info || vm) {
|
||||
fprintf(stderr, "-- Other runtime information "
|
||||
"-----------------------------------------------\n\n");
|
||||
}
|
||||
if (vm) {
|
||||
int i;
|
||||
VALUE name;
|
||||
|
||||
fprintf(stderr, "* Loaded script: %s\n", StringValueCStr(vm->progname));
|
||||
name = vm->progname;
|
||||
fprintf(stderr, "* Loaded script: %s\n", StringValueCStr(name));
|
||||
fprintf(stderr, "\n");
|
||||
fprintf(stderr, "* Loaded features:\n\n");
|
||||
for (i=0; i<RARRAY_LEN(vm->loaded_features); i++) {
|
||||
fprintf(stderr, " %4d %s\n", i, StringValueCStr(RARRAY_PTR(vm->loaded_features)[i]));
|
||||
name = RARRAY_PTR(vm->loaded_features)[i];
|
||||
fprintf(stderr, " %4d %s\n", i, StringValueCStr(name));
|
||||
}
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
|
||||
#if __linux__
|
||||
{
|
||||
#ifdef PROC_MAPS_NAME
|
||||
{
|
||||
FILE *fp = fopen("/proc/self/maps", "r");
|
||||
FILE *fp = fopen(PROC_MAPS_NAME, "r");
|
||||
if (fp) {
|
||||
fprintf(stderr, "* Process memory map:\n\n");
|
||||
|
||||
|
|
Loading…
Reference in a new issue