Как генерировать графики пламени для программы Ruby в Windows?

Ниже находится файл ruby profiler.rb,

    требуют 'ruby-prof' требуют 'ruby-prof-flamegraph'

    # профиль код def func(n)
        temp = 0
        n.times do |i|
            temp = temp * i + i ** i + i 
        end
    end

    result = RubyProf.profile do
        func(1000)
    end

    # печатать профиль графика на текстовом принтере = RubyProf::FlameGraphPrinter.new(result)
    printer.print(STDOUT, {})

Когда я запускаю приведенную ниже команду в windows CMDER (консольный эмулятор), открывается файл flamegraph.pl (скачанный с https://github.com/brendangregg/FlameGraph) и генерирует пустой profiler.svg

ruby profiler.rb |. \ FlameGraph \ flamegraph.pl --countname = ms --width = 728> profiler.svg

На самом деле я ищу профилировщик, который предоставит мне подробную информацию о каждой функции времени выполнения и потребления памяти всей программы.

Я попытался установить rblineprof, но установка gem не удалась с ошибкой

Временно улучшая PATH для MSYS/MINGW...                                                                              
Сборка собственных расширений. Это может занять некоторое время...                                                                    
ОШИБКА: Ошибка установки rblineprof:                                                                                      
        ОШИБКА: не удалось создать собственное расширение для гема.                                                                      

    текущий каталог: C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/rblineprof-0.3.7/ext                                        
C:/Ruby25-x64/bin/ruby.exe -r ./siteconf20180303-18232-16d88qh.rb extconf.rb                                              
проверка для rb_os_allocated_objects()... нет                                                                              
проверка для rb_gc_stat()... да                                                                                          
проверка для rb_profile_frames()... да                                                                                   
проверка для rb_tracepoint_new()... да                                                                                   
создание Makefile                                                                                                         

текущий каталог: C: /Ruby25-x64/lib/ruby/gems/2.5.0/gems/rblineprof-0.3.7/ext                                            
сделать "DESTDIR=" чистым                                                                                                     

текущий каталог: C: /Ruby25-x64/lib/ruby/gems/2.5.0/gems/rblineprof-0.3.7/ext                                            
сделать "DESTDIR="                                                                                                           
генерация rblineprof-x64-mingw32.def                                                                                     
составление rblineprof.c                                                                                                    
В файле, включенном из rblineprof.c:5:0:                                                                                   
D:/msys64/mingw64/x86_64-w64-mingw32/include/sys/time.h:42:13: ошибка: конфликтующие типы для 'gettimeofday'                
 int __cdecl gettimeofday(struct timeval *__restrict__,                                                                   
             ^~~~~~~~~~~~                                                                                                 
В файле, включенном в C:/Ruby25-x64/include/ruby-2.5.0/ruby/defines.h:254:0,                                              
                 из C:/Ruby25-x64/include/ruby-2.5.0/ruby/ruby.h:29,                                                    
                 от C:/Ruby25-x64/include/ruby-2.5.0/ruby.h:33,                                                         
                 от rblineprof.c:1:                                                                                     
C:/Ruby25-x64/include/ruby-2.5.0/ruby/win32.h:318:12: примечание: предыдущая декларация gettimeofday была здесь               
 extern int gettimeofday(struct timeval *, struct timezone *);                                                            
            ^~~~~~~~~~~~                                                                                                  
rblineprof.c:6:10: фатальная ошибка: sys / resource.h: такого файла или каталога нет                                                 
 #включают                                                                                                 
          ^~~~~~~~~~~~~~~~                                                                                                
компиляция прекращена.                                                                                                   
make: *** [Makefile:242: rblineprof.o] Ошибка 1                                                                            

сделать не удалось, код выхода 2                                                                                                  

Gem файлы останутся установленными в C: /Ruby25-x64/lib/ruby/gems/2.5.0/gems/rblineprof-0.3.7 для проверки.                
Результаты заносятся в C:/Ruby25-x64/lib/ruby/gems/2.5.0/extensions/x64-mingw32/2.5.0/rblineprof-0.3.7/gem_make.out            

Пожалуйста, помогите мне, как генерировать графики пламени для программы ruby.

0 ответов

Другие вопросы по тегам