日記です.自分用のメモ代わりに書くことが多いです.
研究室で最近風邪が流行っています.
私も若干風邪気味です.今日はなぜか胃が痛かったです.
というか今も微妙に痛いです.鈍痛みたいな感じ.
私も若干風邪気味です.今日はなぜか胃が痛かったです.
というか今も微妙に痛いです.鈍痛みたいな感じ.
さて,今日やったことですが,Q先輩から
「まさぽんさん,excentricがちゃんと変換してくれへんよ.syntax errorが出る.」
とのことでしたので,めんどくさくて放置してた構文をサポートしました.
excentricというのはなにかというと,私作のSFLをVerilog HDLに変換するプログラムです.
SFLというのは,ハードウェア記述言語(HDL)の一つで,明らかにマイナーですが,
書きやすいのと他の理由ゴニョゴニョにより,ウチの研究室でよく使われている言語です.
SFLはそのままではFPGA用の合成ツールなどで合成できないため,
VHDLまたはVerilog HDLなどのHDLに変換する必要があります.
変換ツールには,PARTHENONに含まれるSFL2VHDLやSFL2Verilog,
他大学の先生が開発したsfl2vl,などがあります.
んで,そのexcentricプログラムのコードを眺めて該当箇所をイジイジして修正しました.
ここで問題が起こりました.Segmentation Faultが発生したのです!
C言語プログラミング(というかgccプログラミング?)をやったことがある人なら分かると思いますが,
この通称セグフォルと呼ばれるエラーは,NULLポインタの値を読んだりしたときに発生するものです.
そんなはずないやん!と思いながらデバッグすると,ある箇所の文字列がバッファオーバフローしている
ことが判明しました.本来なら文字列の大きさは動的に確保するべきなのですが,
面倒なのでスタティックに確保していたのです.今までのテストに用いていたファイルが
あまり大きなものではなかったため,見逃していたようです.
よし,バッファを大きくして問題解決!と思いきや・・・
またセグフォルが発生しました.またかよ,今度はどこだ!とデバッグすると,
今度はスタック領域を使い果たしたために発生したエラーだということが分かりました.
仕方ないので,めんどうですが大きなメモリ空間を必要とするものはmallocなどを使用して
ヒープ領域に確保することにしました.
このデバッグにかなりの時間をとられ,今日の分の気力は使い果たしてしまいました...
Javaだったらこんな苦労しなくていいのになぁ.
おまけですが,↓はJavaで作ったエディタの画像です.
SyntaxHighLighterクラスなるものを公開しているサイトを発見したのでコピー&ペーストでやってみました.
Visual C++でもこのくらい簡単に作れればいいのに.
PR
この記事にコメントする
無題 By
AAA
画像関係の研究だとこの手のエラー(Segmentation Fault)は結構出るみたいですね。個人的には苦労させられました。なにせ220次元の画像を扱うとヒープ領域も平気で使い果たしてしまいますので。一般的にはヒープ領域を使い果たしたときの対処ってどうするんでしょうね?
プロフィール
HN:
まさぽん
性別:
男性
職業:
会社員
カウンター
ブログ内検索
クリック募金
カテゴリー
なかのひと
アクセス解析