shcのデバッグ情報絶対パス化

HJ-LINK/USBは快適なのだが、shc利用時にライブラリのデバッグ時にソースの相対パスをうまく探せないことがあるようだ。
アセンブラはなぜか絶対パスで記録されているし。

そこで、とりあえず下記のような超やっつけな、絶対パス変換版 my_shc を作ってみた。
「my_shc.exe」をダウンロード

HOSの場合
make DEBUG=Yes KERNEL_DEBUG=Yes CMD_CC=my_shc
などとでもして、コンパイラを差し替えてmakeすればいい塩梅にデバッグ情報がすべて絶対パスに切り替わり、カーネルも快適にデバッグできるようになる。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>

int main(int argc, char *argv[])
{
    PROCESS_INFORMATION pi;
    STARTUPINFO si;
    DWORD exitCode=0;
    char szCmd[8192] = "shc";
    char szBuf[8192];
    int    i;

    for ( i = 1; i < argc; i++ )
    {
        if ( argv[i][0] == ‘-‘ )
        {
            strcat(szCmd, " ");
            strcat(szCmd, argv[i]);
        }
        else
        {
            _fullpath(szBuf, argv[i], sizeof(szBuf));
            strcat(szCmd, " ");
            strcat(szCmd, szBuf);
        }
    }

    if ( !CreateProcess(NULL, (LPTSTR)szCmd, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi) )
    {
        return 1;
    }

    WaitForSingleObject(pi.hProcess, INFINITE);
    GetExitCodeProcess(pi.hProcess, &exitCode);
    CloseHandle(pi.hProcess);

    return exitCode;
}

コメント

タイトルとURLをコピーしました