«前の日記(2021-03-16) 最新 次の日記(2021-04-01)» 編集

いがいが日記


2021-03-30 [長年日記]

_ ruby-coreコードでpデバッグ

調べても意外とわからず、笹田さんに教えてもらったのでメモ。 printfだとflushのやり方がよくわからなかったので以下を使うと良い。

rb_p

  • Rubyのp メソッドをつかう方法
  • rb_pにRubyのStringオブジェクト相当を渡す
  • rb_fstring_newはfrozenなStringオブジェクトをつくるメソッド
  • work/rb_mjit_header.hにサンプルになるコードが書いてあったので真似た
rb_p(rb_fstring_new("===foo", (sizeof("===foo") - 1)));

fprintf

  • 笹田さんに fprintf(stderr, "===foo\n"); を教えてもらった
  • flush不要なので便利
  • fprintf(stdout, "===foo\n"); も動いた
  • 前に書いたときにSEGVしたのだけど、あらためて動かしてみたらちゃんと動いた
    • stdoutをちゃんと取れてなかったのかなー?
fprintf(stderr, "===foo\n");
fprintf(stdout, "===foo\n");

«前の日記(2021-03-16) 最新 次の日記(2021-04-01)» 編集