タグ

debugに関するMonMonMonのブックマーク (14)

  • 君はVS Codeのデバッグの知られざる機能について知っているか - Qiita

    はじめに こんにちは、kenです。 GWに「暇だな~~、こんな日はVS Codeの公式ドキュメントを読むか!w」と思って何気なく読んでたらデバッグに関して知らない機能がいくつかあったので、今回はそれをご紹介したいと思います。 おそらく今から紹介する機能はあまり知られてないと思います。もし全部知ってたらVS Code完全理解者なので誇ってください。(!?) 以下に記載する内容はVS Codeの公式ドキュメントのDebuggingという章を参考にしています。 注意 これから紹介する機能は言語によって使えたり、使えなかったりします。 今から紹介する機能のデモはすべてPythonで行おうかと思ったのですが、上記の理由からPythonではサポートされていない機能についてはJavaScriptC++で代用しました。 デバッグで使える便利な機能 ログポイント機能 行を指定しログポイントを追加すると、そ

    君はVS Codeのデバッグの知られざる機能について知っているか - Qiita
  • C/C++でのメモリリーク検出方法 〜AddressSanitizer, Valgrind, mtrace〜 - kivantium活動日記

    C/C++でプログラムを書いているときに遭遇する厄介なバグの一つがメモリリークです。 今回はメモリリークを検出するのに使えるツールの使い方について書きます。 AddressSanitizer コンパイルオプションをつけるだけで使えて出力も見やすいのでおすすめです。 AddressSanitizerはGCC 4.8以降かLLVM 3.1以降で使うことができます。 コンパイル時にオプションをつけるだけでメモリリークを検出してくれます。(若干実行時間が長くなります) 以下のメモリリークのあるプログラム leak.cpp を例に使い方を説明します。 int main() { int *a = new int[10]; } newで作った動的配列をdeleteしていないのでメモリリークになります。 g++ -fsanitize=address -fno-omit-frame-pointer -g l

    C/C++でのメモリリーク検出方法 〜AddressSanitizer, Valgrind, mtrace〜 - kivantium活動日記
  • バニラのアイスを買ったときだけ車のエンジンがかからなくなる不思議な現象、その原因は?

    「目に見えて明らかなことが常に解決策であるとは限らず、どれだけ不思議に見えても事実は事実に過ぎない」ということに気づかされたとして、ウォータールー大学でコンピューターサイエンスを研究するスティーブン・マン教授が不思議なエピソードを紹介しています。 Car allergic to vanilla ice cream http://www.cgl.uwaterloo.ca/smann/IceCream/humor.html ある日、自動車メーカー・ゼネラルモーターズ(GM)のポンティアック開発部に以下のような内容の苦情が寄せられました。 「私がGMに苦情を書いたのはこれで2回目です。私にもおかしな話に思えるので、返事がなくても責めるつもりはありません。私たちの家族はいつも夕後のデザートにアイスクリームをべています。毎晩、事後に家族全員がどの種類のアイスクリームをべるべきかを投票し、私が

    バニラのアイスを買ったときだけ車のエンジンがかからなくなる不思議な現象、その原因は?
    MonMonMon
    MonMonMon 2020/05/11
    これは為になる
  • モバイル開発に役立つJSデバッグ術 | メルカリエンジニアリング

    Mercari Advent Calendar 2017 13日目は フロントエンドチームの @sottar が web アプリの開発(特にモバイル開発)で役立つ Chrome DevTools の便利な機能を紹介します。 はじめに メルカリでは PC からのアクセスよりもモバイルからのアクセスが多いため、web アプリもモバイルからのアクセスを意識したコードを書く必要があります。 しかしモバイル向けのコードを書く際に、毎回実機を接続して確認するのは面倒です。そこで最近のブラウザに付属している開発者ツールにはモバイル向けのコンテンツの開発に役立つ機能が搭載されているため、その機能を使いこなすことでモバイル向けの開発をしつつ、開発のスピードを上げる事が可能です。 そこで日は Chrome DevTools 内にある、特にモバイルデバイス向けのコンテンツ開発に役立つ機能を紹介します。 Dev

    モバイル開発に役立つJSデバッグ術 | メルカリエンジニアリング
  • 高機能バイナリトレーサqiraはどのように実装されているのか - るくすの日記 ~ Out_Of_Range ~

    1. qiraとは qiraとは世界的なハッカー、George Hotz氏 (ジョージ・ホッツ - Wikipedia) によって開発された高機能バイナリトレーサーであり、qiraという名は(QEMU Interactive Runtime Analyser)の略である。 GitHub - BinaryAnalysisPlatform/qira: QEMU Interactive Runtime Analyser 略語を見れば分かるがuser mode QEMUを使用したバイナリ解析ツールであり、ELFなどの実行形式バイナリを実際に動作させて各命令のレジスタ、メモリへの操作を逐次記録する。 これらの記録はweb UIを通して好きな命令位置にカーソルを移動させるだけで見ることができ、その時のレジスタ、メモリの記録が再現される仕組みになっている。ソフトウェアのデバッグやCTFにおけるバイナリ解

    高機能バイナリトレーサqiraはどのように実装されているのか - るくすの日記 ~ Out_Of_Range ~
  • Visual Studio 2015のネイティブメモリ診断機能を使用してメモリリークを検出する - Qiita

    Visual Studio 2015には「ネイティブメモリ診断」が新機能として搭載されています。 Visual Studio 2015 における Visual C++ の新機能 2.ネイティブ メモリ診断 a.メモリ診断セッション (Ctrl+Alt+F2)。ネイティブ アプリケーションのメモリ使用をデバッグ セッション中にリアルタイムで監視できます。 b.メモリのスナップショット。アプリケーションのヒープ内容の瞬間的なイメージをキャプチャします。 2 つのメモリ スナップショットを比較すると、ヒープの状態の違いを調べることができます。 アプリケーションを停止した後の各インスタンスのオブジェクト型、インスタンス値、および割り当て呼び出しスタックが表示されます。 各スナップショットの呼び出しツリーがスタック フレームごとに表示されます。 機能を利用してアプリケーションのメモリリークを検出し

    Visual Studio 2015のネイティブメモリ診断機能を使用してメモリリークを検出する - Qiita
  • 恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は川口浩探検隊に入ることです。 先日、弊社のアプリケーションサーバーで大量にメモリを消費するという現象に遭遇しました。アクセス頻度の低いサーバーがメモリを大量消費するという謎深いものでした。 発生当初の状況はこんな感じです。 アプリケーションサーバーでは Jetty が稼働 現象が発生した JVM は 5GB 程度のメモリを消費しており、明らかに通常ではない量のメモリを消費している 複数台のサーバーで発生していたが、全てで発生したわけではない。 また、発生したサーバーはいずれもアクセス頻度が少ないサーバーだった。 ヒープ、パーマネント、スタック ひとまず、JVM でトラブルが発生した時は何はともあれヒープダンプとスレッドダンプを見るに限ります。各種情報の取得をインフラ部隊へ依頼し、得られたヒープを解析すると、

    恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ
  • 実行時の関数全ての in/out をトレースする - Qiita

    こういう DebugPrint 1関数ずつ入れなくてOK。 素敵ポイント: 大元のソースには手を入れない。 gcc 使用。 ソース #include<stdio.h> /* Proto Type */ void hello_world( void ); void hello_world(void) { printf( "hello!\n" ); } int main(void) { hello_world(); return 0; } #define _GNU_SOURCE #include <dlfcn.h> #include <iostream> extern "C" { void __cyg_profile_func_enter(void* func_address, void* call_site); void __cyg_profile_func_exit(void* func_

    実行時の関数全ての in/out をトレースする - Qiita
  • C++でcatchの中でどこからthrowされたか見る方法はあるのか。 - お前の血は何色だ!! 4

    C++でcatchの中でどこからthrowされたか見る方法はあるのかっていうこと。 コンパイラ依存とかはあんまり気にしない。 色々調べた結果、多分できなくはないっぽいが、やる意味がないと思われるという結論に達した。 可能であることの説明。 とりあえずVC++6のデバッガで見ていたのだがcatchの中ではESPの値はまだ巻き戻されていないっぽい。 サンプルソース void test() { printf("throw!"); throw std::exception("aaa"); } void main() { int a = 0; try { test(); } catch(std::exception &e) { printf("%d %p",a,&e); } } ESP とかをデバッガで追っていくとこんな感じになります。 void test() { printf("throw!");

    C++でcatchの中でどこからthrowされたか見る方法はあるのか。 - お前の血は何色だ!! 4
  • Memory – Part 5: Debugging Tools · Intersec TechTalk

    Introduction Here we are! We spent 4 articles explaining what memory is, how to deal with it and what are the kind of problems you can expect from it. Even the best developers write bugs. A commonly accepted estimation seems to be around of few tens of bugs per thousand of lines of code, which is definitely quite huge. As a consequence, even if you proficiently mastered all the concepts covered by

  • gdb のRPM に付属する /usr/bin/gstack, /usr/bin/gcore コマンド - hibomaの日記

    Scientific Linux 6 系の gdb の RPM に /usr/bin/gstack, /usr/bin/gcore というスクリプトが含まれているのを知りました。どちらも gdb をラップしたシェルスクリプトです。 (追記: CentOS5 の gdb にも入ってました ) /usr/bin/gstack 指定したプロセス(マルチスレッドの場合は全スレッド)のスタックトレースを表示します monit の例 # /usr/bin/gstack `cat /var/run/monit.pid` Thread 2 (Thread 0x7fd3ea10a700 (LWP 27548)): #0 0x0000003cb48dea63 in poll () from /lib64/libc.so.6 #1 0x000000000041c9c7 in can_read_ms () #2

    gdb のRPM に付属する /usr/bin/gstack, /usr/bin/gcore コマンド - hibomaの日記
  • シェルスクリプトのデバッグは typeset または declare を使うと良いかも - よんちゅBlog

    はじめに つい最近知った便利なデバッグ方法 (長年シェルスクリプトを書いているのに知らなかった。これが常識だったら恥ずかしい…) シェルスクリプトのデバッグでは echo で変数の中身を見るという原始的な方法をよく使うかと思います。 いわゆる プリントデバッグ というやつですね。 もう少し詳しいデバッグが必要な場合は、 set -x と set +x でデバッグしたい部分を囲むという方法もあります。 今回は プリントデバッグ で使う echo の代わりに typeset or declare を使うと良いというお話です。 プリントデバッグは typeset or declare を使おう typeset or declare は変数宣言などでよく使うコマンドですが、変数の中身を見るのにも使えます。 echo と比べて何が良いのかというと、変数の中身はもちろん変数名や変数の型も表示してくれ、

    シェルスクリプトのデバッグは typeset または declare を使うと良いかも - よんちゅBlog
  • アセンブリ読んだら負けかなと思ってる - 誰かの役に立てばいいブログ

    子供のころからできるだけ手抜きして成果を挙げることだけは長けている山です。 今回は、C/C++ で作ったプログラムが運用中にクラッシュするときのデバッグ方法のお話しです。 開発中のデバッグは gdb などでソース追いながらデバッグできますが、運用中ですと strip していたり最適化していたりしてデバッグが難しくなります。 そもそも、いきなりクラッシュすると情報が残らずに困ってしまいます。そんなときどうするか。 Step1. スタックトレースを出力する こんな関数を用意しましょう。Linux 以外の人はそれなりに実装してください。 #include <execinfo.h> #include <unistd.h> void dump_stack() { void* bt[100]; int n = backtrace(bt, 100); backtrace_symbols_fd(bt,

    アセンブリ読んだら負けかなと思ってる - 誰かの役に立てばいいブログ
  • GDBでデバッグするなら-g3オプション - 2013-05-08 - ククログ

    RubyPythonなどのスクリプト言語では実行中に例外が発生するとバックトレースを出力してくれます。バックトレースがあるとどこで問題が発生したかがわかるためデバッグに便利です。一方、CやC++では不正なメモリアクセスをすると、バックトレースではなくcoreを残して1終了します2。デバッガーでcoreを解析するとバックトレースを確認できます。 このように、CやC++でデバッグするときにデバッガーはなくてはならない存在です。スクリプト言語にもデバッガーはありますが、デバッガーを使わなくてもデバッグできる範囲が広いため、CやC++をデバッグするときのほうがデバッガーのありがたさがわかります。 この記事では、広く使われているデバッガーであるGDBをもっと便利に使うためのGCCのコンパイルオプション-g3を紹介します。 サンプルプログラム まず、この記事で使うサンプルプログラムを示します。マクロ

    GDBでデバッグするなら-g3オプション - 2013-05-08 - ククログ
  • 1