特定の関数が呼び出されるまでのコールスタックを記録・追跡すること。
コールスタックでは,サブルーチン中での別ルーチンの呼び出しをスタックへのpush操作とみなし,
関数呼び出しを繰り返す過程で,スタック中にスタックフレームが積み上げられてゆく。
プログラム実行時に例外が発生した場合,
例外発生箇所を特定するために,多くの場合スタックトレースが表示される。
PMDのJavaルールについてまとめます。バージョン6.35.0時のルールとなっています。 非推奨となっているルールには「△」を先頭に付与しています。 Code Styleカテゴリのまとめはこちら: olafnosuke.hatenablog.com Best Practicesカテゴリには、一般に受け入れられているベストプラクティスを実施するルールが含まれている。 AbstractClassWithoutAbstractMethod abstractクラスにabstractメソッドが記述されているか // NG例 public abstract class Sample { // abstr…
この記事は2022年06月22日に投稿しました。 目次 はじめに C#でログを出力する おわりに (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; b[a]=b[a]||function(){arguments.currentScript=c.currentScript ||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)}; c.getElementById(a)||(d=c.createElement(f),d.src=g, d.id=a,e=c.get…
はじめに 概要 目標 非目標 動機 1リクエスト-1スレッド方式 非同期方式 仮想スレッドによる1リクエスト-1スレッド方式 説明 仮想スレッドとプラットフォームスレッドの使い分け 仮想スレッドの有効化 仮想スレッドにスレッドプールは不要 仮想スレッドの監視 仮想スレッドのスケジューリング 仮想スレッドの実行 メモリの使用とガベージコレクションとの相互作用 変更点の詳細 java.lang.Thread Thread-local variables java.util.concurrent Networking java.io Java Native Interface (JNI) Debug…
Junit5の使い方 Junit5の書き方 org.junit.jupiterパッケージのアノテーションとクラスを使用する。 テストメソッド @Testを付与したメソッドは、テスト実施の対象となる。 import org.junit.jupiter.api.Test; class SampleTest { @Test public void sample_検証内容() { // ... } } テストの前処理・後処理 テストメソッド実行の前後に行いたい処理を記述することが出来る。 @BeforeAll 全てのテストの実行前に1度だけ行う処理を記述する。 メソッドは引数・戻り値無しで、stati…
3~5月は平均6~7万PVを行き来していて、ちょっと伸び悩んでいる。MAUは1万でTwitter、Tiktok集客だと頭打ち感が出てきた。少しずつSEOも上がってきてはいるが、時間がかかるので急激な伸びは見込めない。次の手はマネタイズを含めた決済や認証を入れる予定なの時間がかかりモチベーションが下がっている。モチベーション下がりつつもやったこと、起きたことを備忘録として残す。 Sentry導入した sentry.io バックエンドだけじゃなく、フロントエンドの例外を検知するために導入した。Nuxtのsentry-moduleがerrorMiddlewareを使っていて競合するから一手間必要だっ…
一週間で印象に残った文献を引用してまとめることで進捗した気分に浸っている駆け出しエンジニア見習いペーペーのスバルです。 梅雨入りしたっぽいですね。空調完備の家に引っ越して良かった、しみじみと。 ちょっと前まで築50年の家に住んでいたんです。マッチョ経理見習いと共に。 冬の平均気温は10度くらいの家でした。当然湿度管理もできない。風呂場に鮮明な赤色のカビが生えているような家です。 ゾッとします。エアコン無しで梅雨を迎えていたかと思うと。 さて、今週の学んだことをまとめて成長を実感していきたいと思います。 学び エラー対応 コミットの打ち消し リモートへプッシュしたけど不要なブランチを削除 コード…
個人的に気になっている Project Loom で Virtual Threads がプレビューされたので仕様である JEP を翻訳してみました。 ボリュームが多いため、いくつかのパートに分けて公開していきます。 原文はこちら:JEP 425: Virtual Threads (Preview) 全パートはこちら 日本語訳:JEP 425 : Virtual Threads (Preview) Part 1 - #chiroito ’s blog 日本語訳:JEP 425 : Virtual Threads (Preview) Part 2 - #chiroito ’s blog 日本語訳:…
前回のあらすじ MDEV-24582に取り組むうちに、GDBが仲間に加わった。コードを実行しながら変数の中身も見えるすごいやつである。強力な仲間たちとともに、今日もIssueに立ち向かう。 tmokmss.hatenablog.com とはいえ、とりあえず気持ちを変えてみる ここ最近取り組んでいるMDEV-24582はなかなかの難敵なので、修正方針についてメンテナに合意を得てから実装に着手することにしよう。修正を追えてPRを出したあとに根本的な指摘をされるのはお互いに避けたいだろう。 該当のチケットに方針に関するたたき台を投稿したので、しばし返信を待つ。そしてこのままではブログネタがなくなるの…
こちらのもくもく会も活用して、簡単なLinterをつくりました。 gostaticanalysis.connpass.com つくったもの github.com Goの静的解析の事始めとして、エラーのラップフォーマットの間違いを検知するLinter errwrapfmtをつくりました。 errwrapfmtは文字列リテラルに %w があったらエラーをラップしようとしていると判断して : %w(コロン半角スペースが前方にあるか)というフォーマットになっているかどうかチェックするLinterです。文字列リテラル(正確にはBasicLit)に対してシンプルに正規表現をかけてます。 このLinterを…
デバッグ時にエラーログを見ることになるが、見るだけで「ウワ〜」となってしまう。初めての言語・フレームワークだとなおさら思ってしまう。 けど、これを辿る方が解決が早いので頑張る必要がある。 「うわ〜!みなかったことにしちゃお!」となるのを避けるためには「どの処理でエラーになったのか」を探すことだけに注力すると良い。 スタックトレースであればコードを差している箇所を確認する 文章を読まない。コード行番号だけに着目する そのコードを確認する 処理順にトレースが出るタイプ・最後に落ちたところから辿るようにトレースが出るタイプ、2種類ある そのコードは何をする(つもりの)ものか把握する 正常系(やりたい…
スタックトレース周りについて調べたので放流。 概要 Goでエラーを扱う標準パッケージ errors はGo1.18現在スタックトレースに対応していません。Go2では標準パッケージerrorsにスタックトレースがサポートされる予定です(proposal)。それまでの間、スタックトレースを出力するためには別のパッケージを使う必要があります。 その場合の有力な選択肢として pkg/errors と xerrors があります。基本このどちらかを使えば良いですが、どちらを使えば良いかは色々な情報があり迷いどころです。これらの特徴を整理して、スタックトレースを扱いたい人が読めばなんとなく何をどう選べばい…
個人的に気になっている Project Loom で Virtual Threads がプレビューされたので仕様である JEP を翻訳してみました。 ボリュームが多いため、いくつかのパートに分けて公開していきます。スターやブコメが付くとモチベーションが上がるかもしれません。(上がらないかもしれません) 原文はこちら:JEP 425: Virtual Threads (Preview) 全パートはこちら 日本語訳:JEP 425 : Virtual Threads (Preview) Part 1 - #chiroito ’s blog 日本語訳:JEP 425 : Virtual Thread…
Pythonがログを出力する仕組みってどんな感じ??ログレコードとは?(logging.LogRecord) ログ出力されるメッセージそのものの情報をもつもの ロガー間でやり取りされるものはログレコード 詳しく説明するとログのメッセージ本文や ログレコードの生成時刻、設定されたログレベル、 呼び出されたソースのファイル名、ソース中の行番号、 スタックトレースの情報を持っていて、自動的に記録される重要なポイントとしてログレコードを生成するのは ロガーの役目、出力するのは、ハンドラーの役目ロガーとは ログレコードを生成したり、他のロガーに受け渡す 受け取ったログレコードをハンドラに渡すハンドラとは…
自分は地道にデバッグするの好きなんだけど、少数派なのかもしれないと思ってきた。アプリが動作しないと設定を初期化したりすぐ(Nodeとか)バージョンアップしようとする人が意外と多い。— もふもふ (@froakie0021) 2022年5月27日 これは新卒のときの自分もそうだったやつ↓ あとコードが動かないときにあれこれ書き換えたりするとか、すぐデバッガーを開くとかありがち。それよりもまず正常系の動きと現状の差分を比較して「どこに」原因がありそうか突き止める方が解決も早いと思う。— もふもふ (@froakie0021) 2022年5月27日 デバッグするとき初めに考えること 100%再現する…
はじめに こんにちは、LANSCOPE クラウド版 フロントエンド開発チームの南です。 LANSCOPE クラウド版の管理コンソールは、TypeScript + Angularで実装しています。 つい先日、クラウド版はバージョン4.5.0.0をリリースしましたが、そのリリースにAngular 12へのバージョンアップも含まれています。 Angular 8から新世代のビューエンジンとしてIvyが導入されましたが、先日公開されたバージョン13でIvyへの移行が完了したようです。 今回はそのビューエンジンについてご紹介していきます。 Ivyがホットだったのは数年前の話になるので、今更感があり若干気が…