小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Visual Studioでリリースビルドをデバッグする

はじめに

Visual Studio(VC++)には、リリースビルドとデバッグビルドの2つのビルドモードがあります。開発中は、デバッグビルドでバグを取り除き、テストが終わったらリリースビルドします。

VCのリリースビルドとデバッグビルドの違い - 虎塚VCのリリースビルドとデバッグビルドの違い - 虎塚
デバッグビルドでしかステップ実行ができないものと思っていましたが、リリースビルドでもステップ実行ができることがわかりました。
この記事では、リリースビルドでステップ実行する方法を紹介します。

デバッグではじめるCプログラミング
山本 貴光
翔泳社
売り上げランキング: 405,564

リリースビルドのプロパティを変更する

ソリューションのプロパティを開き、以下の設定を行います。
1.「C++」→全般→デバッグ情報の形式で「プログラム データベース(/Zi)」を選択します。
f:id:replication:20140315113704p:plain
2.リンカ→全般→インクリメンタル リンクを有効にするで「インクリメンタル リンクを行わない(/INCREMENTAL:NO)」を選択します。
f:id:replication:20140315114035p:plain
3.リンカ→デバッグ→デバッグ情報の生成で「はい(/DEBUG)」を選択します。
f:id:replication:20140315114431p:plain
4.リンカ→最適化→参照で「参照されないデータを除去する(/OPT:REF)を選択します。また、COMDAT の圧縮で「冗長なCOMDATを削除する(/OPT:ICF)を選択します。
f:id:replication:20140315115313p:plain
これでプロパティの設定は完了です。

リリースビルドのデバッグ手順

1.リリースビルドした実行ファイルを実行します。
2.Visual Studioを起動し、ソースコード上にブレークポイントを設定します。
3.Visual Studioのデバッグメニュー→プロセスにアタッチ(P)を選択します。
f:id:replication:20140315115549p:plain
4.デバッグしたいプロセス名を選択し、「アタッチ(A)」をクリックします。
f:id:replication:20140315115743p:plain
5.ソースコードの処理が実行された場合に、ブレークポイントで実行が停止します。
f:id:replication:20140315121519p:plain

変数が参照できない

ステップ実行はできるようになりましたが、ウォッチ式で変数の値が参照できませんでした。
f:id:replication:20140315121710p:plain
リリースビルド特有のコードの最適化が実行されると、ステップ実行中の変数の参照ができないようです。
このため、ソースコード中にコードの最適化を無効にする設定を埋め込みます。

#pragma optimize("", off)

再度リリースビルドして、アタッチするとデバッグビルドと同じように変数の値を参照することができました。
f:id:replication:20140315122052p:plain

MS Office 2010試用版の試用期限を延長する方法

f:id:replication:20140315151752p:plain

はじめに

MS Office 2010の試用版は、60日経過するとライセンスが切れてしまい使えなくなります。
しかし、試用期限が延長できることがわかりました。

ITメモ: Office2010 ライセンス猶予期間を延長する方法ITメモ: Office2010 ライセンス猶予期間を延長する方法

試用期限を延長する(Windows 7の場合)

1.管理者でコマンドプロンプトを起動し、以下のフォルダに移動する。

cd "C:\Program Files\Common Files\microsoft shared\OfficeSoftwareProtectionPlatform"

2.ospprearm.exeを実行します。

ospprearm.exe
>Microsoft Office rearm successful.

"Microsoft Office rearm successful."というメッセージが表示されると延長成功です。

試用期限の延長は5回まで

試用期限の延長は5回までで、30日ずつ延長されるようです。最大で60日+150日(7ヶ月)試用できることになります。

Office2010の試用期間は60日だが、その猶予期間をリセットすることで延長して使える方法(ただし最大5回まで、1回につき30日延長)
ITメモ: Office2010 ライセンス猶予期間を延長する方法 はてなブックマーク - ITメモ: Office2010 ライセンス猶予期間を延長する方法

今さらながらCSVを出力するExcelマクロ作ってみた。

はじめに

ExcelでCSVファイルを出力するのは面倒です。
まず、ファイルの保存形式を変えないといけない。加えて警告ダイアログや確認ダイアログが何度も表示されるので、うっとうしい。

そこでCSVファイルを出力するExcelマクロを作ってみました。ネット上にあるいくつかの記事を読んでみましたが、以下の記事がコードの行数も少なくて参考になりました。

Excel VBAでCSVファイルを作成してみる - NAVER まとめExcel VBAでCSVファイルを作成してみる - NAVER まとめ

前提条件
  • A1セルには値が入っていること
  • A列に値が入っているところまでを出力します。(A列の空白セルが最終行となります)
CSVファイルを出力Excelマクロ
Sub CSV出力()
    Dim csvFilePath As String
    Dim iCount As Long
    Dim jCount As Long
    Dim kCount As Long
    Dim maxRow As Long
    Dim maxCol As Long
    Dim fileNo As Integer
    Dim FileName As String
    
    ' ファイル名の取得(拡張子を除く)
    FileName = Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".", -1, vbTextCompare) - 1)
    ' CSVファイルパスの作成
    csvFilePath = ActiveWorkbook.Path & "\" & FileName & ".csv"
    ' 最終行
    maxRow = ActiveSheet.Range("A1").End(xlDown).Row
    ' 最終列
    maxCol = ActiveSheet.Range("A1").End(xlToRight).Column
    ' ファイル番号
    fileNo = FreeFile

    ' ファイル開く
    Open csvFilePath For Output As #fileNo

    ' 縦方向ループ(最終行まで)
    For iCount = 1 To maxRow
        ' 横方向ループ(最終列-1まで)
        For jCount = 1 To maxCol - 1
            ' ファイル出力(改行なし)
            Write #fileNo, Cells(iCount, jCount);

            ' ループカウンタをコピー
            kCount = jCount
        Next jCount
        ' 最終列をファイル出力(改行付き)
        Write #fileNo, Cells(iCount, kCount + 1)
    Next iCount

    ' ファイルを閉じる
    Close #fileNo
'
End Sub
使い方

1.Excelを起動し、開発メニューから「マクロの記録」をクリックします。
f:id:replication:20140315224306p:plain
2.マクロ名に「CSV出力」と入力し、「OK」ボタンをクリックします。
f:id:replication:20140315224614p:plain
3.「記録終了」をクリックして、マクロの記録を停止します。
f:id:replication:20140315224357p:plain
4.「マクロ」ボタンをクリックします。
f:id:replication:20140315224735p:plain
5.「編集」ボタンをクリックします。
f:id:replication:20140315224756p:plain
6.VBAのエディタが起動したら、ソースコードを貼り付けて、保存します。
f:id:replication:20140315225135p:plain
一度保存したら、マクロボタンから何度も実行することができます。

実行結果

f:id:replication:20150805012816p:plainf:id:replication:20150805012818p:plain

関連記事