C++ debug/print custom type with GDB : the case of nlohmann json libraryHow to inspect std::string in GDB with no source code?What are the differences between a pointer variable and a reference variable in C++?How do I format a Microsoft JSON date?Can comments be used in JSON?How can I pretty-print JSON in a shell script?The Definitive C++ Book Guide and ListWhat is the correct JSON content type?What is the “-->” operator in C++?Why does Google prepend while(1); to their JSON responses?Parse JSON in JavaScript?How do I POST JSON data with Curl from a terminal/commandline to Test Spring REST?

Can Legal Documents Be Siged In Non-Standard Pen Colors?

Is the U.S. Code copyrighted by the Government?

Symbol used to indicate indivisibility

Count the occurrence of each unique word in the file

Biological Blimps: Propulsion

2.8 Why are collections grayed out? How can I open them?

How to explain what's wrong with this application of the chain rule?

What does chmod -u do?

How to indicate a cut out for a product window

Did Swami Prabhupada reject Advaita?

How did Rebekah know that Esau was planning to kill his brother in Genesis 27:42?

How much character growth crosses the line into breaking the character

250 Floor Tower

Terse Method to Swap Lowest for Highest?

Store Credit Card Information in Password Manager?

is this legal and f i dont come up with extra money is the deal off

Is there any references on the tensor product of presentable (1-)categories?

Why did the EU agree to delay the Brexit deadline?

It grows, but water kills it

What should you do if you miss a job interview (deliberately)?

Fear of getting stuck on one programming language / technology that is not used in my country

Is it possible to have a strip of cold climate in the middle of a planet?

Why is it that I can sometimes guess the next note?

Does an advisor owe his/her student anything? Will an advisor keep a PhD student only out of pity?



C++ debug/print custom type with GDB : the case of nlohmann json library


How to inspect std::string in GDB with no source code?What are the differences between a pointer variable and a reference variable in C++?How do I format a Microsoft JSON date?Can comments be used in JSON?How can I pretty-print JSON in a shell script?The Definitive C++ Book Guide and ListWhat is the correct JSON content type?What is the “-->” operator in C++?Why does Google prepend while(1); to their JSON responses?Parse JSON in JavaScript?How do I POST JSON data with Curl from a terminal/commandline to Test Spring REST?













10















I'm working on a project using nlohmann's json C++ implementation.



How can one easily explore nlohmann's JSON keys/vals in GDB ?



I tried to use this STL gdb wrapping since it provides helpers to explore STL structures that lohmann's JSON lib is using.
But I don't find it convenient.



Here is a simple use case:



json foo;
foo["flex"] = 0.2;
foo["awesome_str"] = "bleh";
foo["nested"] = "bar", "barz";


What I would like to have in GDB:



(gdb) p foo

"flex" : 0.2,
"awesome_str": "bleh",
"nested": etc.



Current behavior



(gdb) p foo
$1 =
m_type = nlohmann::detail::value_t::object,
m_value =
object = 0x129ccdd0,
array = 0x129ccdd0,
string = 0x129ccdd0,
boolean = 208,
number_integer = 312266192,
number_unsigned = 312266192,
number_float = 1.5427999782486669e-315


(gdb) p foo.at("flex")
Cannot evaluate function -- may be inlined // I suppose it depends on my compilation process. But I guess it does not invalidate the question.
(gdb) p *foo.m_value.object
$2 =
_M_t =
_M_impl =
<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer> > > >> =
<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer> > > >> = <No data fields>, <No data fields>,
<std::_Rb_tree_key_compare<std::less<void> >> =
_M_key_compare = <No data fields>
,
<std::_Rb_tree_header> =
_M_header =
_M_color = std::_S_red,
_M_parent = 0x4d72d0,
_M_left = 0x4d7210,
_M_right = 0x4d7270
,
_M_node_count = 5
, <No data fields>











share|improve this question




























    10















    I'm working on a project using nlohmann's json C++ implementation.



    How can one easily explore nlohmann's JSON keys/vals in GDB ?



    I tried to use this STL gdb wrapping since it provides helpers to explore STL structures that lohmann's JSON lib is using.
    But I don't find it convenient.



    Here is a simple use case:



    json foo;
    foo["flex"] = 0.2;
    foo["awesome_str"] = "bleh";
    foo["nested"] = "bar", "barz";


    What I would like to have in GDB:



    (gdb) p foo

    "flex" : 0.2,
    "awesome_str": "bleh",
    "nested": etc.



    Current behavior



    (gdb) p foo
    $1 =
    m_type = nlohmann::detail::value_t::object,
    m_value =
    object = 0x129ccdd0,
    array = 0x129ccdd0,
    string = 0x129ccdd0,
    boolean = 208,
    number_integer = 312266192,
    number_unsigned = 312266192,
    number_float = 1.5427999782486669e-315


    (gdb) p foo.at("flex")
    Cannot evaluate function -- may be inlined // I suppose it depends on my compilation process. But I guess it does not invalidate the question.
    (gdb) p *foo.m_value.object
    $2 =
    _M_t =
    _M_impl =
    <std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer> > > >> =
    <__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer> > > >> = <No data fields>, <No data fields>,
    <std::_Rb_tree_key_compare<std::less<void> >> =
    _M_key_compare = <No data fields>
    ,
    <std::_Rb_tree_header> =
    _M_header =
    _M_color = std::_S_red,
    _M_parent = 0x4d72d0,
    _M_left = 0x4d7210,
    _M_right = 0x4d7270
    ,
    _M_node_count = 5
    , <No data fields>











    share|improve this question


























      10












      10








      10








      I'm working on a project using nlohmann's json C++ implementation.



      How can one easily explore nlohmann's JSON keys/vals in GDB ?



      I tried to use this STL gdb wrapping since it provides helpers to explore STL structures that lohmann's JSON lib is using.
      But I don't find it convenient.



      Here is a simple use case:



      json foo;
      foo["flex"] = 0.2;
      foo["awesome_str"] = "bleh";
      foo["nested"] = "bar", "barz";


      What I would like to have in GDB:



      (gdb) p foo

      "flex" : 0.2,
      "awesome_str": "bleh",
      "nested": etc.



      Current behavior



      (gdb) p foo
      $1 =
      m_type = nlohmann::detail::value_t::object,
      m_value =
      object = 0x129ccdd0,
      array = 0x129ccdd0,
      string = 0x129ccdd0,
      boolean = 208,
      number_integer = 312266192,
      number_unsigned = 312266192,
      number_float = 1.5427999782486669e-315


      (gdb) p foo.at("flex")
      Cannot evaluate function -- may be inlined // I suppose it depends on my compilation process. But I guess it does not invalidate the question.
      (gdb) p *foo.m_value.object
      $2 =
      _M_t =
      _M_impl =
      <std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer> > > >> =
      <__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer> > > >> = <No data fields>, <No data fields>,
      <std::_Rb_tree_key_compare<std::less<void> >> =
      _M_key_compare = <No data fields>
      ,
      <std::_Rb_tree_header> =
      _M_header =
      _M_color = std::_S_red,
      _M_parent = 0x4d72d0,
      _M_left = 0x4d7210,
      _M_right = 0x4d7270
      ,
      _M_node_count = 5
      , <No data fields>











      share|improve this question
















      I'm working on a project using nlohmann's json C++ implementation.



      How can one easily explore nlohmann's JSON keys/vals in GDB ?



      I tried to use this STL gdb wrapping since it provides helpers to explore STL structures that lohmann's JSON lib is using.
      But I don't find it convenient.



      Here is a simple use case:



      json foo;
      foo["flex"] = 0.2;
      foo["awesome_str"] = "bleh";
      foo["nested"] = "bar", "barz";


      What I would like to have in GDB:



      (gdb) p foo

      "flex" : 0.2,
      "awesome_str": "bleh",
      "nested": etc.



      Current behavior



      (gdb) p foo
      $1 =
      m_type = nlohmann::detail::value_t::object,
      m_value =
      object = 0x129ccdd0,
      array = 0x129ccdd0,
      string = 0x129ccdd0,
      boolean = 208,
      number_integer = 312266192,
      number_unsigned = 312266192,
      number_float = 1.5427999782486669e-315


      (gdb) p foo.at("flex")
      Cannot evaluate function -- may be inlined // I suppose it depends on my compilation process. But I guess it does not invalidate the question.
      (gdb) p *foo.m_value.object
      $2 =
      _M_t =
      _M_impl =
      <std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer> > > >> =
      <__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long long, unsigned long long, double, std::allocator, nlohmann::adl_serializer> > > >> = <No data fields>, <No data fields>,
      <std::_Rb_tree_key_compare<std::less<void> >> =
      _M_key_compare = <No data fields>
      ,
      <std::_Rb_tree_header> =
      _M_header =
      _M_color = std::_S_red,
      _M_parent = 0x4d72d0,
      _M_left = 0x4d7210,
      _M_right = 0x4d7270
      ,
      _M_node_count = 5
      , <No data fields>








      c++ json gdb pretty-print nlohmann-json






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 14 mins ago







      LoneWanderer

















      asked 6 hours ago









      LoneWandererLoneWanderer

      1,112825




      1,112825






















          1 Answer
          1






          active

          oldest

          votes


















          13














          I found my own answer reading further the GDB capabilities and stack overflow questions concerning print of std::string.



          Short path



          I simply defined a gdb command as follows:



          # this is a gdb script
          # can be loaded from gdb using
          # source my_script.txt (or. gdb or whatever you like)
          define pjson
          # use the lohmann's builtin dump method, ident 4 and use space separator
          printf "%sn", $arg0.dump(4, ' ', true).c_str()
          end
          # configure command helper (text displayed when typing 'help pjson' in gdb)
          document pjson
          Prints a lohmann's JSON C++ variable as a human-readable JSON string
          end


          Using it in gdb:



          (gdb) source my_custom_script.gdb
          (gdb) pjson foo

          "flex" : 0.2,
          "awesome_str": "bleh",
          "nested":
          "bar": "barz"





          Over the top



          The other way is to define a GDB pretty printer in python and make it tightly associated to your project (autoloading stuff activated). See this link for an in-depth approach.



          Basically, when in gdb you would type:



          (gdb) p foo


          and GDB will automagically test for foo's type and invoke the associated pretty printer if any. That would end-up in the same result. The main difference is that it is done using the well-known print command. The person debugging would not have to learn a new command (like the pjson defined in the short answer).



          Quoting:




          A pretty-printer consists of two parts: a lookup function to detect if the type is supported, and the printer itself.



          Here is an example showing how a std::string printer might be written. See Pretty Printing API, for details on the API this class must provide.




          class StdStringPrinter(object):
          "Print a std::string"

          def __init__(self, val):
          self.val = val

          def to_string(self):
          return self.val['_M_dataplus']['_M_p']

          def display_hint(self):
          return 'string'


          Still quoting for the sake of completness:




          And here is an example showing how a lookup function for the printer example above might be written.




          def str_lookup_function(val):
          lookup_tag = val.type.tag
          if lookup_tag == None:
          return None
          regex = re.compile("^std::basic_string<char,.*>$")
          if regex.match(lookup_tag):
          return StdStringPrinter(val)
          return None





          share|improve this answer

























          • That looks pretty useful. Unfortunately I am out of votes ATM.

            – πάντα ῥεῖ
            6 hours ago











          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55316620%2fc-debug-print-custom-type-with-gdb-the-case-of-nlohmann-json-library%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          13














          I found my own answer reading further the GDB capabilities and stack overflow questions concerning print of std::string.



          Short path



          I simply defined a gdb command as follows:



          # this is a gdb script
          # can be loaded from gdb using
          # source my_script.txt (or. gdb or whatever you like)
          define pjson
          # use the lohmann's builtin dump method, ident 4 and use space separator
          printf "%sn", $arg0.dump(4, ' ', true).c_str()
          end
          # configure command helper (text displayed when typing 'help pjson' in gdb)
          document pjson
          Prints a lohmann's JSON C++ variable as a human-readable JSON string
          end


          Using it in gdb:



          (gdb) source my_custom_script.gdb
          (gdb) pjson foo

          "flex" : 0.2,
          "awesome_str": "bleh",
          "nested":
          "bar": "barz"





          Over the top



          The other way is to define a GDB pretty printer in python and make it tightly associated to your project (autoloading stuff activated). See this link for an in-depth approach.



          Basically, when in gdb you would type:



          (gdb) p foo


          and GDB will automagically test for foo's type and invoke the associated pretty printer if any. That would end-up in the same result. The main difference is that it is done using the well-known print command. The person debugging would not have to learn a new command (like the pjson defined in the short answer).



          Quoting:




          A pretty-printer consists of two parts: a lookup function to detect if the type is supported, and the printer itself.



          Here is an example showing how a std::string printer might be written. See Pretty Printing API, for details on the API this class must provide.




          class StdStringPrinter(object):
          "Print a std::string"

          def __init__(self, val):
          self.val = val

          def to_string(self):
          return self.val['_M_dataplus']['_M_p']

          def display_hint(self):
          return 'string'


          Still quoting for the sake of completness:




          And here is an example showing how a lookup function for the printer example above might be written.




          def str_lookup_function(val):
          lookup_tag = val.type.tag
          if lookup_tag == None:
          return None
          regex = re.compile("^std::basic_string<char,.*>$")
          if regex.match(lookup_tag):
          return StdStringPrinter(val)
          return None





          share|improve this answer

























          • That looks pretty useful. Unfortunately I am out of votes ATM.

            – πάντα ῥεῖ
            6 hours ago
















          13














          I found my own answer reading further the GDB capabilities and stack overflow questions concerning print of std::string.



          Short path



          I simply defined a gdb command as follows:



          # this is a gdb script
          # can be loaded from gdb using
          # source my_script.txt (or. gdb or whatever you like)
          define pjson
          # use the lohmann's builtin dump method, ident 4 and use space separator
          printf "%sn", $arg0.dump(4, ' ', true).c_str()
          end
          # configure command helper (text displayed when typing 'help pjson' in gdb)
          document pjson
          Prints a lohmann's JSON C++ variable as a human-readable JSON string
          end


          Using it in gdb:



          (gdb) source my_custom_script.gdb
          (gdb) pjson foo

          "flex" : 0.2,
          "awesome_str": "bleh",
          "nested":
          "bar": "barz"





          Over the top



          The other way is to define a GDB pretty printer in python and make it tightly associated to your project (autoloading stuff activated). See this link for an in-depth approach.



          Basically, when in gdb you would type:



          (gdb) p foo


          and GDB will automagically test for foo's type and invoke the associated pretty printer if any. That would end-up in the same result. The main difference is that it is done using the well-known print command. The person debugging would not have to learn a new command (like the pjson defined in the short answer).



          Quoting:




          A pretty-printer consists of two parts: a lookup function to detect if the type is supported, and the printer itself.



          Here is an example showing how a std::string printer might be written. See Pretty Printing API, for details on the API this class must provide.




          class StdStringPrinter(object):
          "Print a std::string"

          def __init__(self, val):
          self.val = val

          def to_string(self):
          return self.val['_M_dataplus']['_M_p']

          def display_hint(self):
          return 'string'


          Still quoting for the sake of completness:




          And here is an example showing how a lookup function for the printer example above might be written.




          def str_lookup_function(val):
          lookup_tag = val.type.tag
          if lookup_tag == None:
          return None
          regex = re.compile("^std::basic_string<char,.*>$")
          if regex.match(lookup_tag):
          return StdStringPrinter(val)
          return None





          share|improve this answer

























          • That looks pretty useful. Unfortunately I am out of votes ATM.

            – πάντα ῥεῖ
            6 hours ago














          13












          13








          13







          I found my own answer reading further the GDB capabilities and stack overflow questions concerning print of std::string.



          Short path



          I simply defined a gdb command as follows:



          # this is a gdb script
          # can be loaded from gdb using
          # source my_script.txt (or. gdb or whatever you like)
          define pjson
          # use the lohmann's builtin dump method, ident 4 and use space separator
          printf "%sn", $arg0.dump(4, ' ', true).c_str()
          end
          # configure command helper (text displayed when typing 'help pjson' in gdb)
          document pjson
          Prints a lohmann's JSON C++ variable as a human-readable JSON string
          end


          Using it in gdb:



          (gdb) source my_custom_script.gdb
          (gdb) pjson foo

          "flex" : 0.2,
          "awesome_str": "bleh",
          "nested":
          "bar": "barz"





          Over the top



          The other way is to define a GDB pretty printer in python and make it tightly associated to your project (autoloading stuff activated). See this link for an in-depth approach.



          Basically, when in gdb you would type:



          (gdb) p foo


          and GDB will automagically test for foo's type and invoke the associated pretty printer if any. That would end-up in the same result. The main difference is that it is done using the well-known print command. The person debugging would not have to learn a new command (like the pjson defined in the short answer).



          Quoting:




          A pretty-printer consists of two parts: a lookup function to detect if the type is supported, and the printer itself.



          Here is an example showing how a std::string printer might be written. See Pretty Printing API, for details on the API this class must provide.




          class StdStringPrinter(object):
          "Print a std::string"

          def __init__(self, val):
          self.val = val

          def to_string(self):
          return self.val['_M_dataplus']['_M_p']

          def display_hint(self):
          return 'string'


          Still quoting for the sake of completness:




          And here is an example showing how a lookup function for the printer example above might be written.




          def str_lookup_function(val):
          lookup_tag = val.type.tag
          if lookup_tag == None:
          return None
          regex = re.compile("^std::basic_string<char,.*>$")
          if regex.match(lookup_tag):
          return StdStringPrinter(val)
          return None





          share|improve this answer















          I found my own answer reading further the GDB capabilities and stack overflow questions concerning print of std::string.



          Short path



          I simply defined a gdb command as follows:



          # this is a gdb script
          # can be loaded from gdb using
          # source my_script.txt (or. gdb or whatever you like)
          define pjson
          # use the lohmann's builtin dump method, ident 4 and use space separator
          printf "%sn", $arg0.dump(4, ' ', true).c_str()
          end
          # configure command helper (text displayed when typing 'help pjson' in gdb)
          document pjson
          Prints a lohmann's JSON C++ variable as a human-readable JSON string
          end


          Using it in gdb:



          (gdb) source my_custom_script.gdb
          (gdb) pjson foo

          "flex" : 0.2,
          "awesome_str": "bleh",
          "nested":
          "bar": "barz"





          Over the top



          The other way is to define a GDB pretty printer in python and make it tightly associated to your project (autoloading stuff activated). See this link for an in-depth approach.



          Basically, when in gdb you would type:



          (gdb) p foo


          and GDB will automagically test for foo's type and invoke the associated pretty printer if any. That would end-up in the same result. The main difference is that it is done using the well-known print command. The person debugging would not have to learn a new command (like the pjson defined in the short answer).



          Quoting:




          A pretty-printer consists of two parts: a lookup function to detect if the type is supported, and the printer itself.



          Here is an example showing how a std::string printer might be written. See Pretty Printing API, for details on the API this class must provide.




          class StdStringPrinter(object):
          "Print a std::string"

          def __init__(self, val):
          self.val = val

          def to_string(self):
          return self.val['_M_dataplus']['_M_p']

          def display_hint(self):
          return 'string'


          Still quoting for the sake of completness:




          And here is an example showing how a lookup function for the printer example above might be written.




          def str_lookup_function(val):
          lookup_tag = val.type.tag
          if lookup_tag == None:
          return None
          regex = re.compile("^std::basic_string<char,.*>$")
          if regex.match(lookup_tag):
          return StdStringPrinter(val)
          return None






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 8 mins ago

























          answered 6 hours ago









          LoneWandererLoneWanderer

          1,112825




          1,112825












          • That looks pretty useful. Unfortunately I am out of votes ATM.

            – πάντα ῥεῖ
            6 hours ago


















          • That looks pretty useful. Unfortunately I am out of votes ATM.

            – πάντα ῥεῖ
            6 hours ago

















          That looks pretty useful. Unfortunately I am out of votes ATM.

          – πάντα ῥεῖ
          6 hours ago






          That looks pretty useful. Unfortunately I am out of votes ATM.

          – πάντα ῥεῖ
          6 hours ago




















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55316620%2fc-debug-print-custom-type-with-gdb-the-case-of-nlohmann-json-library%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          कुँवर स्रोत दिक्चालन सूची"कुँवर""राणा कुँवरके वंशावली"

          Why is a white electrical wire connected to 2 black wires?How to wire a light fixture with 3 white wires in box?How should I wire a ceiling fan when there's only three wires in the box?Two white, two black, two ground, and red wire in ceiling box connected to switchWhy is there a white wire connected to multiple black wires in my light box?How to wire a light with two white wires and one black wireReplace light switch connected to a power outlet with dimmer - two black wires to one black and redHow to wire a light with multiple black/white/green wires from the ceiling?Ceiling box has 2 black and white wires but fan/ light only has 1 of eachWhy neutral wire connected to load wire?Switch with 2 black, 2 white, 2 ground and 1 red wire connected to ceiling light and a receptacle?

          चैत्य भूमि चित्र दीर्घा सन्दर्भ बाहरी कडियाँ दिक्चालन सूची"Chaitya Bhoomi""Chaitya Bhoomi: Statue of Equality in India""Dadar Chaitya Bhoomi: Statue of Equality in India""Ambedkar memorial: Centre okays transfer of Indu Mill land"चैत्यभमि