タグ

C++とdebugに関するnsyeeのブックマーク (6)

  • Visual Assist | Visual Studio Extension for C/C++/C# Developers

    Black Friday and Cyber Monday SALE: 10% OFF Personal | 15% OFF Standard | 20% OFF Concurrent SHOP NOW

  • Big Sky :: C++でcoutやcerrの挙動を変える。

    先日twitterで「C++でデバッグする時、よくやるよね」って言ったら結構知らない人がいたのでここでも紹介してみる。 既存のコードでcout/cerrを使ったデバッグ文がわんさかあって、これログファイルとして出力したいな...って場合ありますよね。 そんな場合 #include <iostream> #include <fstream> using namespace std; int main() { // こんなの ofstream ofs("debug.log"); cout.rdbuf(ofs.rdbuf()); // いれとく cout << "debug string" << endl; } こうしておくと、その後のcoutへの出力が全てdebug.logというファイルへ出力される。 なおrdbufを元に戻すには #include <iostream> #include <f

    Big Sky :: C++でcoutやcerrの挙動を変える。
  • モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人

    まだC, C++がないようなので書いてみた。主にLinux(DebianとかUbuntu)での環境構築について。 コンパイラ まずはapt-getでコンパイラをインストールする。UbuntuやDebianなら以下のコマンドでgccやg++および標準ライブラリ等がインストールされる。 $ sudo apt-get install build-essential デバッグツール デバッガおよびデバッグツールは少なくとも以下の三つは入れる。(あとltraceも欲しいかな?) GDB 言わずと知れたGNUのデバッガ Valgrind メモリリークや不正メモリアクセスの検出 strace システムコールのトレース $ sudo apt-get install gdb valgrind strace ビルドツール C, C++のビルドツールといえばまずmakeが浮かぶけど、最近ではSConsやCMak

    モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人
  • GC がちゃんと動いているところを見たい - 電波日記@はてな

    ひとつ前のエントリで、GC のタイミングにあわせて裏にあるオブジェクトが解放されるような仕掛けを入れました…が、ちょっとやそっとでは(…という言い方も語弊があるかとは思いますが) GC がおこらないので、テストするのが面倒です。 こういうときは、GC を手でトリガできるととても便利。Java でいう System.gc() みたいなものがほしいわけです。 だけど、V8 の API にはそんなのあるの!? …答えからいうと、公開されている API にはありません。:-( ただ、がんばればやり方が 2 通りほどあります。 (1) internal な領域に足を踏み入れる V8 のソースコードの heap.cc あたりを見ると、CollectAllGarbage() とかよさそうな関数が定義されていますが、これは v8 namespace の API としては公開されていません。 ただ、なんとか

    GC がちゃんと動いているところを見たい - 電波日記@はてな
  • V8 のヒープの中身を覗き見る - 電波日記@はてな

    参照がなくなったはずのオブジェクトがなかなか回収されないのでどうしたもんかと思い、昨日今日ととりあえずヒープの中に分け入っています。 GC 管理下のヒープの中身を覗くとか正直あまりやりたくはないのですが、表向きには参照がなくなっているはずなのでだれの責任かつきとめないとなんとなく気持ちが悪いわけでして…。(実装間違っているのかなあ、と不安。) v8::internal のコードをいろいろおっかけて、すこしはヒープまわりの実装の概要が把握できてきました。 v8 では内部データ構造は v8::internal::Object* として表されており、この値を「ハンドル」(v8::internal::Handle)を用いて間接アクセスします。API レベルで公開されているハンドルとは v8::Utils::OpenHandle(), v8::Utils::ToLocal() などで内外のハンドルと

    V8 のヒープの中身を覗き見る - 電波日記@はてな
  • C++の便利ツール・ライブラリ - DO++

    フルタイムで働きはじめて4ヶ月。 いろんなことがありました。 今日はインターンが来ているということもあり日頃のC++コーディングライフの中で大変重用しているツールを紹介します。といってもどれも有名なツールでググれば解説がでてくるとは思いますので、一言ずつだけ紹介してみます。みなさんも何かよさげなライブラリ・ツールがありましたら教えてください。 - valgrind/callgrind/cachegrind プログラムの実行結果を解析するツール群。まぁ、王道であえて紹介する必要はないかもしいませんが.。valgrindはプログラムのどこかでメモリが漏れているかどうかのチェックに使います.コードのどの部分で確保した領域がどこで漏れているかまで追跡することができます valgrind --leak-check=full command プログラムのどのが計算量的にボトルネックになっているかを調べ

    C++の便利ツール・ライブラリ - DO++
  • 1