" ラインタイムエラー | MT4でEA自作しちゃお〜
トップ  >  リファレンス  >  MQL4プログラム  >  ラインタイムエラー
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ
ラインタイムエラー


クライアントターミナルの実行サブシステムは、
MQL4プログラムの実行中に発生したエラーコードを保持します。

各実行可能ファイルは_LastError変数を持っています。

OnInit関数が開始される前に、_LastError変数はリセットされます。
計算中または内部関数の呼び出し中にエラーが発生する状況では、
_LastError変数は対応するエラーコードを受け入れます。


この変数に格納された値は、GetLastError()関数を用いて取得する事が出来ます。

■プログラムが即終了となる致命的なエラー例
 ・ゼロ除算
 ・配列の範囲外指定
 ・不正なオブジェクトポインタ使用


管理人の勝手なコメント:
プログラムを勉強したばかりの初心者は"列の範囲外指定"の間違いを連発するので、気を付けましょう。
c言語のポインタをちゃんと理解している人は配列のロジックを理解しているので、配列オーバーフローの間違いは滅多に犯しません。
うっかりやってしまった場合でも単体テストでホワイトボックステストを行えば見つける事が可能です。
意味も分からず言われたから仕方無く適当に作った単体テストでは全く意味がありません。

この致命的なエラー例は、5年近く経験がある客先常駐型偽装請負の人間が現場で何度も犯しています。
プログラムのロジックによっては状況によって発生したりしなかったりして、納品されたプログラムに時限爆弾的に仕込まれた時に、
偽装請負の人間を管理する人間がそのソフトをVSSにアップロードした数日後・・・悲惨な事になりました。

MQL4ではコンパイラが親切にもエラーが発生したソースコード行数まで教えてくれるので直ぐに場所が特定出来ますが、
c言語プログラムでサーバー上で稼働テストをしていた時はcoreファイルを吐いてプログラムがダウンするので、
coreファイルからプログラムカウンタの形跡を辿って犯人を捜すという、ほぼ徹夜確定コースになりました。

こういう突如プログラムがダウンする様な不具合が発生すると、ベースコアのシステムを作成した人間が何故か容疑者として挙げられて
調査を強制させられます。
というか何度も調査を強制させられました。

半年前に作成して使われてきたベースコアのシステムが今更不具合なんて有り得ないし!!
外注の人間が作ったプログラムが怪しいんじゃないかと抗議しても外注の人間は、

「そんな致命的な不具合が出る様な変更はしてないから絶対に有り得ない!!」

と言い張ります。

結局、私が調査させられて調査した結果、やっぱり外注の人間の作ったプログラムが怪しいと断定して、
VSSでソースコード差分を取ってソースの変更箇所を洗い出すと・・・
forループの条件が変更になって、forループ内で使用されているグローバル変数配列の配列数も変更されていたのですが、
forループの終了条件に使われている#define値が、配列宣言時にも使われていました。

・・・完全に配列オーバーフローです。
てゆか単体テストやってないでしょ?
納品者には単体テスト・結合テスト実施済みと記載されていましたが、
意味も分からず適当にテストしたんでしょうね?

てゆかソースコードレビューも実施済みになっているけど、レビューした人間は寝てたの?www

この偽装請負のiは何度も致命的なエラーが仕込まれたプログラムを平然と納品して、
その度にベースコアのシステムを作成していた私が何故か調査させられていました・・・

このiという偽装請負の人間はグローバル変数配列の初期化を行わず、
しかもその値を除算して数学の世界で禁断とされているゼロ除算を仕込んだプログラムも納品してくれた事もありました。
このiが契約解除にならないのが非常に不思議でしたw
大きな企業ではプログラムを組める人が非常に少ない為(殆どが仕様作成するSEで、下流工程のコーディング・テスト作業の殆どは外注に丸投げ)、
猫の手でも借りたいから初心者以下の偽装請負の人間でも契約継続するんでしょうね。

ブラック企業から引き抜かれた私はプログラムが組めるので、SEとPGを兼業させられましたけど・・・


てゆか、外注に仕事を頼んでVSSにソースをアップロードした人間が責任取って調査すればいいのに!!
外注が「自分が犯人じゃない!」と言い張るので、結局私が調査させられていました。
時限爆弾的に発生するので、他にもソースコードが沢山アップロードされた後なので直ぐには分からないのもありますけど・・・

あのT社のiにcoreファイルの解析をやらせてあげたいくらいでした、出来る筈もありませんが・・・



スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system