記事閲覧

− 野ざらし言 −

5218 Re^2: デバッグモード時の変数の値の保存

めざら 2022/12/26(Mon) 17:10 [5135]へのコメント
http://mezala.la.coocan.jp/
ひとつコメントし忘れていたようです。

■テキストレコードにあるポインタ関連のダブルワード値を確認する方法

まず,以下のページを見てください。
・VZ構造体関連覚書 : テキスト構造体(テキストレコード)
http://mezala.la.coocan.jp/vz/notes/struct.html#text_struct

カレントのテキストであれば変数 wa の値が先頭を示す構造体があり,要素ごとに先頭からの相対アドレスが示してあります。

そのうち,以下のダブルワード値を持つグループがあります。
+110 dword tblkp block lptr ブロックマーク位置
+114 dword tnowp current lptr
+118 dword trgtp target lptr
+122 dword toldp old current lptr

これらに格納された値は,マーク(0~4)のアドレスを扱うのと同様の方法で扱えるものです。実際の意味はソースを読める人に確認していただいた方がよいかとは思うのですが,wa+110(wa..55 + wa..56)が ^B 等でブロック指定を開始した位置で間違いないでしょう。wa+114(wa..57 + wa..58)はカーソル位置ですね。三番目と四番目はよくわかりません。何かのために保存されているのでしょう。

これらをトレース中に表示させるコードを仕込んでおきます。

&t &m("tblkp: [%lxh] / tnowp: [%lxh] ",wa..55,wa..56,wa..57,wa..58)

こんな感じでしょうか。

ブロックをペーストしたのち,Ek+ ならカーソル位置がブロックの最後に更新され,Ek- の場合は #B でカーソル位置が更新されますが,これらの動作の前後に表示されるアドレスが正常か異常(ポインタがずれる)かを確認することで,なんらかの解決への道筋が見えるかもしれません。見えないかもしれません。

関連記事一覧ツリー (▼ を押すとツリー全体を一括表示します)

- 5092.ファイル挿入異常の原因がわから.. - としき 22/10/06-18:27

返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

おなまえ :
Eメール :
タイトル :
メッセージ: 通常モード(推奨)  整形モード(非推奨)  preモード(空白再現)
※ プログラムコード等を含まない場合は,できるだけ通常モードをご利用ください。

参照先 :
暗証キー: (英数字で8文字以内) プレビューなし


- 以下のフォームから自分の投稿記事を修正・削除することができます -

処理 記事No. 暗証キー