質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

2816閲覧

VisualStudioでステップインデバックが出来ない

Y.R.T

総合スコア42

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/08/31 05:45

編集2020/08/31 05:55

コンパイルは通るのですが、
ステップインでデバッグをしようとすると下記メッセージが
出力されます。

kernel32.dll![下のフレームは間違っているか、または見つかりません。kernel32.dll に対して読み込まれたシンボルはありません]

このメッセセージが出てデバックが出来ないです。

<修正>
すみません、ステップインデバックはできるようです。
しかし、上記メッセージは何でしょうか?
実際に実行しても何も実行結果が表示さずに終了して
しまいます。

#include <cmath> #include <assert.h> bool are_equal(double const d1, double const d2, double const epsilon = 0.001) { return std::fabs(d1 - d2) < epsilon; } namespace temperature { enum class scale { celsius, fahrenheit, kelvin }; template <scale S> class quantity { const double amount; public: constexpr explicit quantity(double const a) : amount(a) {} explicit operator double() const { return amount; } }; template <scale S> inline bool operator==(quantity<S> const& lhs, quantity<S> const& rhs) { return are_equal(static_cast<double>(lhs), static_cast<double>(rhs)); } template <scale S> inline bool operator!=(quantity<S> const& lhs, quantity<S> const& rhs) { return !(lhs == rhs); } template <scale S> inline bool operator< (quantity<S> const& lhs, quantity<S> const& rhs) { return static_cast<double>(lhs) < static_cast<double>(rhs); } template <scale S> inline bool operator> (quantity<S> const& lhs, quantity<S> const& rhs) { return rhs < lhs; } template <scale S> inline bool operator<=(quantity<S> const& lhs, quantity<S> const& rhs) { return !(lhs > rhs); } template <scale S> inline bool operator>=(quantity<S> const& lhs, quantity<S> const& rhs) { return !(lhs < rhs); } template <scale S> constexpr quantity<S> operator+(quantity<S> const& q1, quantity<S> const& q2) { return quantity<S>(static_cast<double>(q1) + static_cast<double>(q2)); } template <scale S> constexpr quantity<S> operator-(quantity<S> const& q1, quantity<S> const& q2) { return quantity<S>(static_cast<double>(q1) - static_cast<double>(q2)); } template <scale S, scale R> struct conversion_traits { static double convert(double const value) = delete; }; template <> struct conversion_traits<scale::celsius, scale::kelvin> { static double convert(double const value) { return value + 273.15; } }; template <> struct conversion_traits<scale::kelvin, scale::celsius> { static double convert(double const value) { return value - 273.15; } }; template <> struct conversion_traits<scale::celsius, scale::fahrenheit> { static double convert(double const value) { return (value * 9) / 5 + 32;; } }; template <> struct conversion_traits<scale::fahrenheit, scale::celsius> { static double convert(double const value) { return (value - 32) * 5 / 9; } }; template <> struct conversion_traits<scale::fahrenheit, scale::kelvin> { static double convert(double const value) { return (value + 459.67) * 5 / 9; } }; template <> struct conversion_traits<scale::kelvin, scale::fahrenheit> { static double convert(double const value) { return (value * 9) / 5 - 459.67; } }; template <scale R, scale S> constexpr quantity<R> temperature_cast(quantity<S> const q) { return quantity<R>(conversion_traits<S, R>::convert(static_cast<double>(q))); } namespace temperature_scale_literals { constexpr quantity<scale::celsius> operator "" _deg(long double const amount) { return quantity<scale::celsius> {static_cast<double>(amount)}; } constexpr quantity<scale::fahrenheit> operator "" _f(long double const amount) { return quantity<scale::fahrenheit> {static_cast<double>(amount)}; } constexpr quantity<scale::kelvin> operator "" _k(long double const amount) { return quantity<scale::kelvin> {static_cast<double>(amount)}; } } } int main() { using namespace temperature; using namespace temperature_scale_literals; auto t1{ 36.5_deg }; auto t2{ 79.0_f }; auto t3{ 100.0_k }; { auto tf = temperature_cast<scale::fahrenheit>(t1); auto tc = temperature_cast<scale::celsius>(tf); assert(t1 == tc); } { auto tk = temperature_cast<scale::kelvin>(t1); auto tc = temperature_cast<scale::celsius>(tk); assert(t1 == tc); } { auto tc = temperature_cast<scale::celsius>(t2); auto tf = temperature_cast<scale::fahrenheit>(tc); assert(t2 == tf); } { auto tk = temperature_cast<scale::kelvin>(t2); auto tf = temperature_cast<scale::fahrenheit>(tk); assert(t2 == tf); } { auto tc = temperature_cast<scale::celsius>(t3); auto tk = temperature_cast<scale::kelvin>(tc); assert(t3 == tk); } { auto tf = temperature_cast<scale::fahrenheit>(t3); auto tk = temperature_cast<scale::kelvin>(tf); assert(t3 == tk); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

kernel32.dll![下のフレームは間違っているか、または見つかりません。kernel32.dll に対して読み込まれたシンボルはありません]

しかし、上記メッセージは何でしょうか?

呼び出し履歴を表示する際に、Windowsのデバッグシンボルが読み込まれていないためにmain関数がどこから呼ばれたのか特定できずに出ています。
質問のプログラムの場合はデバッグシンボルを読み込ませても上記メッセージが消えるだけですが…
Specify symbol (.pdb) and source files in the Visual Studio debugger

投稿2020/08/31 08:48

編集2020/08/31 08:57
SHOMI

総合スコア4079

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.R.T

2020/08/31 09:35

このプログラムは、何か計算結果等が表示されますか?
SHOMI

2020/08/31 09:39 編集

計算結果を表示するコードがどこにもないので表示されません。
guest

0

ソースコードを丸々コピーしてステップイン実行してもエラーは出ません。
どの行をステップインしましたか?

投稿2020/08/31 06:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.R.T

2020/08/31 08:31

エラーではないのですが、メッセージが出ます。 また、実行しても何も計算結果が表示されないのですが。 全てassertで終わっているから何も表示されないですか?
SHOMI

2020/08/31 09:43 編集

>何も計算結果が表示されない 計算結果表示するコードがどこにもありませんが… >全てassertで終わっているから何も表示されないですか? デバッグビルドで計算結果が間違っていればassertメッセージが表示されます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問