[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

trouble of GDB



斉藤と申します。
RM5231-200の自社ボードで、NetBSD-1.4.2を動かしてます。
また一つ質問がありまして、NetBSD-1.5でも構いませんので、
結果を教えていただけないでしょうか。

gdbを使うと、ブレークポイントや、シングルステップがうまくかかりません。
sys/kern/sys_process.c の

sys_ptrace(p, v, retval)
{
...
    case  PT_WRITE_I:       /* XXX no seperate I and D spaces */
    case  PT_WRITE_D:
        write = 1;
...
        return (procfs_domem(p, t, NULL, &uio));
を
        error = procfs_domem(p, t, NULL, &uio);
        if (write) {    /* PT_WRITE_I or PT_WRITE_D */
            void flush_cache_ptrace(caddr_t, int);

            flush_cache_ptrace((caddr_t)SCARG(uap, addr), sizeof (int));
        }
        return (error);

に変更(flush_cache_ptrac()のキャッシュをクリアする関数は自作)
を加えると問題なく動作するようになりました。
キャッシュのクリアの問題かと思ったのですが、
いまさらgdbが動かないなどとゆうことはないですよね。
だとすれば、もっと別のところを直す必要があると思いますが、
確認したいので、どなたかお返事お願いします。

以上、よろしくお願い致します。

PS.
ついでの余計な話ですが、gdbが悪いのかと思って、
gdb-4.18を動かしてしまいました。今のはgdb-4.17ベースですよね。

PT_STEPはmips/ptrace.hでコメントになっていますが、使えないのですか?