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>
|
Fri Nov 11 12:36:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
|
||||||
|
|
||||||
* io.c (pipe_open): Remove fflush(stdin). it's no effect.
|
* 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__)
|
#if defined(__FreeBSD__) && defined(__OPTIMIZE__)
|
||||||
#undef HAVE_BACKTRACE
|
#undef HAVE_BACKTRACE
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef HAVE_BACKTRACE
|
||||||
|
#define HAVE_BACKTRACE 0
|
||||||
|
#endif
|
||||||
#if HAVE_BACKTRACE
|
#if HAVE_BACKTRACE
|
||||||
# include <execinfo.h>
|
# include <execinfo.h>
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
|
@ -774,7 +777,15 @@ dump_thread(void *arg)
|
||||||
void
|
void
|
||||||
rb_vm_bugreport(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) {
|
if (vm) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
SDR();
|
SDR();
|
||||||
|
@ -823,22 +834,29 @@ rb_vm_bugreport(void)
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
#endif /* HAVE_BACKTRACE */
|
#endif /* HAVE_BACKTRACE */
|
||||||
|
|
||||||
fprintf(stderr, "-- Other runtime information "
|
if (other_runtime_info || vm) {
|
||||||
"-----------------------------------------------\n\n");
|
fprintf(stderr, "-- Other runtime information "
|
||||||
{
|
"-----------------------------------------------\n\n");
|
||||||
|
}
|
||||||
|
if (vm) {
|
||||||
int i;
|
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, "\n");
|
||||||
fprintf(stderr, "* Loaded features:\n\n");
|
fprintf(stderr, "* Loaded features:\n\n");
|
||||||
for (i=0; i<RARRAY_LEN(vm->loaded_features); i++) {
|
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");
|
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) {
|
if (fp) {
|
||||||
fprintf(stderr, "* Process memory map:\n\n");
|
fprintf(stderr, "* Process memory map:\n\n");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue