LoginSignup
2
0

(¦3[▓▓] crystal tool unreachable で呼ばれていないメソッドを見つける

Last updated at Posted at 2023-12-04

はじめに

さて、もうネタが尽きてしまいました。
今日は crystal tool の中のあまり使ったことないツールを試してみます。

crystal tool unreachable

crystal tool とすると、いろいろなツールが出てきます。その中でも、下の方に表示されているのが unreachableくんです。これは、利用していないメソッドを列挙することができます。

piyo.cr
def study_very_hard()
  10000.times do
    10000.times do
      10000.times do
        study_very_hard()
      end
    end
  end 
end

def neru()
 sleep 7
end

puts "明日から頑張る"
neru()

こんなコードがあったとしたら、

crystal tool unreachable piyo.cr

とすると、こーんな感じで

piyo.cr:1:1	top-level study_very_hard	9 lines

呼ばれてないメソッドがあることを教えてくれます。

neru()

(:3[▓▓]

 (¦3[▓▓]

           =͟͟͞͞ (¦3[▓▓]


ちなみに、この study_very_hard() を実行すると、stack overflow で死亡します。

Stack overflow (e.g., infinite or very deep recursion)
[0x56220b058706] *Exception::CallStack::print_backtrace:Nil +118 in ./piyo
[0x56220b047d76] ~procProc(Int32, Pointer(LibC::SiginfoT), Pointer(Void), Nil) +310 in ./piyo
[0x7ffb6ce42910] ?? +140717840410896 in /lib/x86_64-linux-gnu/libc.so.6
[0x56220b048100] *study_very_hard:Nil +80 in ./piyo
[0x56220b048105] *study_very_hard:Nil +85 in ./piyo (261831 times)
[0x56220b037a75] __crystal_main +1093 in ./piyo
[0x56220b0d0b36] *Crystal::main_user_code<Int32, Pointer(Pointer(UInt8))>:Nil +6 in ./piyo
[0x56220b0d0aaa] *Crystal::main<Int32, Pointer(Pointer(UInt8))>:Int32 +58 in ./piyo
[0x56220b044fd6] main +6 in ./piyo
[0x7ffb6ce280d0] ?? +140717840302288 in /lib/x86_64-linux-gnu/libc.so.6
[0x7ffb6ce28189] __libc_start_main +137 in /lib/x86_64-linux-gnu/libc.so.6
[0x56220b037565] _start +37 in ./piyo
[0x0] ???

バックトレースを見ると、呼び出しがたくさん並んでいます。

gdb ./piyo

image.png

やったね。質問サイトじゃない方のStackOverflowだ(´ω`)(謎テンション)

おわり

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0