troushoo

Fernflower: IntelliJ Community project 内の Java のデコンパイラ

概要IntelliJ Community project 内のプロジェクトである Fernflower を紹介します。Fernflower は Java のデコンパイラです。内容Fernflower を用いた Java のデコンパイル方法を紹介します。Ubuntu 18.04 上で試してます。1. IntelliJ Community プロジェクトをクローンします。git clone https://github.com/JetBrains/intellij-community2.  Fernflower をビルドします。cd intellij-community/plugins/java-decompiler/e...
  1. 2018/09/24(月) 23:12:40|
  2. Java
  3. | トラックバック:0
  4. | コメント:0

新たなデバイスの接続を調査:setupapi.dev.log

新たなデバイスが接続されたことの調査に使える setupAPI.dev.log を紹介します。デバイスが接続されていた事実の調査に利用可能です。手順0. 一例として、VMware 環境の Shared Windows Hello for Business 9 を有効にしてみます。1. 「%systemdrive%\Windows\inf\setupapi.dev.log」を開きます。2. 以下のようなログが記録されています。注目点は色付きの部分です。>>>  [Device Install (Hardware initiated) - U...
  1. 2018/09/17(月) 23:25:06|
  2. ツール
  3. | トラックバック:0
  4. | コメント:0

Java アプリのヒープダンプの状態を比較

概要Java アプリのヒープダンプの状態を比較する方法を紹介します。ここでは VisualVM を用います。内容手順1. ヒープダンプを取得する Java プログラムのプロセス ID を確認します。jcmd2. ヒープダンプを作成します。jcmd <プロセス ID> GC.heap_dump <ヒープダンプの出力パス>3. 比較用のヒープダンプを作成します。jcmd <プロセス ID> GC.heap_dump <ヒープダンプの出力パス>4. VisualVM を起動します...
  1. 2018/09/09(日) 22:27:04|
  2. Java
  3. | トラックバック:0
  4. | コメント:0

プロセスダンプがとられたコンピューターのコンピューター名を表示

!envvar COMPUTERNAME で、プロセスダンプがとられたコンピューターのコンピューター名を表示できます。以下の例では、ダンプがとられたコンピューター名は「TR-DESKTOP」であることがわかります。情報元How to get computer name, host name from a memory dump, WinDbg (英語)関連記事プールが割り当てられた際にブレークする方法:PoolHitTag...
  1. 2018/09/01(土) 22:21:23|
  2. WinDbg
  3. | トラックバック:0
  4. | コメント:0

Jupyter Notebook でのパフォーマンス調査

概要Jupyter Notebook でのプロファイリング方法を紹介します。%time: 実行時間を計測%timeit: 複数回の結果を元に、実行時間を計測%prun: プロファイリングを実行%lprun: 行ごとにプロファイリングを実行%memit: メモリ使用量を測定内容%time実行時間を計測します。User CPU time、Sys CPU time、Wall time がわかります。import randomL = [random.random() for i in range(100000)]%time L.sort()%timeit複数回の結果を元に、実...
  1. 2018/09/01(土) 17:30:21|
  2. Python
  3. | トラックバック:0
  4. | コメント:0

jcmd を使ってデッドロックのトラブルシューティング

Java 7 より追加された jcmd を使って、デッドロックの原因を調査する方法を紹介します。手順1. jcmd を実行し、デッドロックが疑われるアプリのプロセス ID を表示させます。2. jcmd <プロセス ID> Thread.print でコールスタックが表示されます。3. ハングを検知すると、デッドロックの情報とスレッドのコールスタックが表示されます。今回用いたソースコード以下のソースコードでデッドロックを作りました。public class ...
  1. 2018/08/19(日) 22:54:55|
  2. Java
  3. | トラックバック:0
  4. | コメント:0

残留オブジェクトを削除可能な Microsoft 公開の GUI ツール Lingering Object Liquidator

概要残留オブジェクト (Lingering Object) を削除可能な、Microsoft より公開されている GUI ツール Lingering Object Liquidator を紹介します。内容Lingering Object Liquidator のダウンロード・インストールLingering Object Liquidator は Microsoft の Download Center よりフリーでダウンロードできます。インストールは、ダウンロードした LingeringObjectLiquidator.msi を実行し、ウィザードに従います。Lingering Objec...
  1. 2018/08/12(日) 22:57:16|
  2. AD
  3. | トラックバック:0
  4. | コメント:0

ファイルアクセスや新規プロセスの監視 – opensnoop / execsnoop

概要Linux でファイルシステムや新規プロセスの監視をするツールである BCC の opensnoop / execsnoop を紹介します。内容BCC のインストールBCC は GitHub にオープンソースで公開されているツールです。BCC の一部として opensnoop や execsnoop があります。Ubuntu 17.10 では以下のコマンドでインストール可能です。(他のディストリビューションのインストール方法は GitHub の INSTALL.md で確認できます。)sudo apt-key adv ...
  1. 2018/08/05(日) 21:56:56|
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

WMI トレースの有効化

WMI のトレースを有効にする方法を紹介します。Windows Server 2016 で試してます。WMI トレースの有効化1. イベントビューアー (eventvwr.msc) を起動します。2. 「表示」→「分析およびデバッグ ログの表示」をクリックします。チェックが入ったことを確認します。3. コンソールツリーの「アプリケーションとサービス ログ」→「Microsoft」→「Windows」→「WMI-Activity」→「Trace」を右クリック→「ログの有効化」をクリックします...
  1. 2018/07/29(日) 22:19:26|
  2. ツール
  3. | トラックバック:0
  4. | コメント:0

Java 9 以降のコアダンプで、ハングの原因を特定

概要Java 9 以降のコアダンプで、ハングの原因を特定する方法を紹介します。今回用いたソースコードは GitHub のサイトで確認できます。内容GUI ツール1. 「jhsdb hsdb」を実行します。2. 「File」→「Open HotSpot core file」をクリックします。3. 「Path to core file:」にコアファイルのパスを、「Path to Java executable:」にコアダンプ作成時に使用していた Java 実行ファイルへのパスを入力します。4. 「Tools」→「Deadlock...
  1. 2018/07/22(日) 23:58:21|
  2. Java
  3. | トラックバック:0
  4. | コメント:0
次のページ

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (77)
ネットワーク (37)
Wireshark (43)
Visual Studio (55)
WinDbg (33)
SOS・Psscor2/Psscor4 (25)
Linux (19)
コンテナ (4)
Azure (17)
Tips (19)
AD (6)
.NET (24)
Python (5)
Java (5)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する