Профилирование Node.js с помощью Dtrace не показывает имена функций

Я пытаюсь профилировать использование ЦП для моего проекта с помощью DTrace. Я просто следовал сценарию.

Проблема в том, что он не показывает имена функций. Файл stacks.out выглядит так:

 CPU     ID                    FUNCTION:NAME
   0  73700                        :tick-60s 


          node`_ZN2v86Object3GetENS_6HandleINS_5ValueEEE+0x1
          node`_ZN4node7TCPWrap12OnConnectionEP11uv_stream_si+0x14b
          node`uv__server_io+0xbf
          node`uv__io_poll+0x259
          node`uv_run+0xda
          node`_ZN4node5StartEiPPc+0x16d
          node`main+0x1b
          node`_start+0x83
            1

          node`_ZN4node6Buffer4FillERKN2v89ArgumentsE+0x22b
          0x82474d1b
          0x8241ee9c
          0x8241e624
          0x8241e30f
          0x82426abd
          0x82419e4e
          0x82419948
          0x82413fc3
          0x8d20e501
          0x82416f65
          0x82413f98
          0x8243e7d3
          0x824186c0
          0x8246e8cf
          0x8d221899
          0x8d21308a
          node`_ZN2v88internalL6InvokeEbNS0_6HandleINS0_10JSFunctionEEENS1_INS0_6ObjectEEEiPS5_Pb+0x101
          node`_ZN2v88internal9Execution4CallENS0_6HandleINS0_6ObjectEEES4_iPS4_Pbb+0xc9
          node`_ZN2v88Function4CallENS_6HandleINS_6ObjectEEEiPNS1_INS_5ValueEEE+0x10b
          node`_ZN4node12MakeCallbackEN2v86HandleINS0_6ObjectEEENS1_INS0_8FunctionEEEiPNS1_INS0_5ValueEEE+0x4c
          node`_ZN4node12MakeCallbackEN2v86HandleINS0_6ObjectEEENS1_INS0_6StringEEEiPNS1_INS0_5ValueEEE+0x66
          node`_ZN4node10StreamWrap12OnReadCommonEP11uv_stream_si8uv_buf_t14uv_handle_type+0x14f
          node`_ZN4node10StreamWrap6OnReadEP11uv_stream_si8uv_buf_t+0x2e
          node`uv__read+0x281
          node`uv__stream_io+0x131
          node`uv__io_poll+0x259
          node`uv_run+0xda
          node`_ZN4node5StartEiPPc+0x16d
          node`main+0x1b
          node`_start+0x83
            1

График пламени показывает шестнадцатеричный код (например, «0x82474d1b») в качестве вызовов функций, а не фактическое имя функции.

Я использую OmniOS (ОС на основе illumos) vagrant box r151002 и сделал это (https://gist.github.com/dalssoft/5595688) для сборки 32-битной версии node.js на OmniOS.

Есть предположения?


person David Lojudice Sb.    schedule 17.05.2013    source источник


Ответы (1)


У меня были похожие проблемы, когда я писал свой блог о совместном использовании openindiana и node.js.

http://blog.nearform.com/blog/node-openindiana.html

Я обнаружил, что явный подход к арке процессора — это способ решить эту проблему.

./configure --with-dtrace --dest-cpu=x64

Не забудьте также разобрать символы С++.

c++filt < stacks.out > demangled.out
person Number 9    schedule 13.07.2013
comment
прохладно! попробую, а потом скажу, сработало ли на OmniOS :) - person David Lojudice Sb.; 17.07.2013
comment
Для дальнейшего использования вышеупомянутая запись в блоге, похоже, была перемещена сюда: nearform.com/nodecrunch/node. -openindiana - person d0gb3r7; 24.05.2014
comment
Снова переехал. Ссылка на archive.org: http://web.archive.org/web/20130717020412/http://blog.nearform.com/blog/node-openindiana.html - person Garth Kidd; 09.12.2014
comment
Разместите его и на моем собственном сайте venshare.com/2014/ 21 сентября/node-js-on-open-indiana Спасибо за наводку - person Number 9; 22.12.2014