Partage
  • Partager sur Facebook
  • Partager sur Twitter

Des gens ici qui utilisent la commande nm -C ?

    19 août 2022 à 15:09:07

    Salut tout le monde !

    Il y a des gens ici qui utilisent la commande nm -C ?

    J'ai vu des gens à mon boulot utiliser cette commande pour essayer d'obtenir des informations mais je ne vois pas trop ce que cette commande peut apporter...

    Je viens de l'utiliser pour un programme Hello world donc un programme simple mais la sortie est quasiment incompréhensible...

    0000000000000dc0 s GCC_except_table11
    0000000000000d5c s GCC_except_table4
    0000000000000dd4 s GCC_except_table40
    0000000000000de8 s GCC_except_table45
    0000000000000d9c s GCC_except_table7
                     U __Unwind_Resume
    0000000000000a1c t std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__get_pointer() const
    0000000000000aa4 t std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__get_long_pointer() const
    0000000000000acc t std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__get_short_pointer() const
    00000000000007f8 t std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::data() const
    0000000000000a70 t std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__is_long() const
    0000000000000330 t std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::operator bool() const
    0000000000000af4 t std::__1::__compressed_pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep, std::__1::allocator<char> >::first() const
    0000000000000688 t std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >::failed() const
    0000000000000b18 t std::__1::__compressed_pair_elem<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep, 0, false>::__get() const
    0000000000000cf0 t std::__1::ctype<char>::widen(char) const
                     U std::__1::locale::use_facet(std::__1::locale::id&) const
    000000000000060c t std::__1::ios_base::flags() const
    0000000000000bf0 t std::__1::ios_base::rdbuf() const
    0000000000000768 t std::__1::ios_base::width() const
                     U std::__1::ios_base::getloc() const
    0000000000000624 t std::__1::basic_ios<char, std::__1::char_traits<char> >::fill() const
    0000000000000bcc t std::__1::basic_ios<char, std::__1::char_traits<char> >::rdbuf() const
    0000000000000c38 t std::__1::basic_ios<char, std::__1::char_traits<char> >::widen(char) const
    0000000000000754 t std::__1::nullptr_t::operator std::__1::basic_streambuf<char, std::__1::char_traits<char> >*<std::__1::basic_streambuf<char, std::__1::char_traits<char> > >() const
    0000000000000c08 T std::__1::char_traits<char>::eq_int_type(int, int)
    0000000000000c30 T std::__1::char_traits<char>::eof()
    000000000000030c T std::__1::char_traits<char>::length(char const*)
                     U std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(unsigned long, char)
    00000000000007bc t std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(unsigned long, char)
    000000000000089c t std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(unsigned long, char)
                     U std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()
                     U std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)
                     U std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()
                     U std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)
                     U std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()
    0000000000000098 t std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >& (*)(std::__1::basic_ostream<char, std::__1::char_traits<char> >&))
    0000000000000b2c t std::__1::pointer_traits<char const*>::pointer_to(char const&)
    0000000000000780 t std::__1::basic_streambuf<char, std::__1::char_traits<char> >::sputn(char const*, long)
    00000000000009f4 t std::__1::__non_trivial_if<true, std::__1::allocator<char> >::__non_trivial_if()
    000000000000034c T std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char)
    00000000000008e8 t std::__1::__compressed_pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep, std::__1::allocator<char> >::__compressed_pair<std::__1::__default_init_tag, std::__1::__default_init_tag>(std::__1::__default_init_tag&&, std::__1::__default_init_tag&&)
    0000000000000924 t std::__1::__compressed_pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep, std::__1::allocator<char> >::__compressed_pair<std::__1::__default_init_tag, std::__1::__default_init_tag>(std::__1::__default_init_tag&&, std::__1::__default_init_tag&&)
    00000000000005d8 t std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >::ostreambuf_iterator(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)
    0000000000000b64 t std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >::ostreambuf_iterator(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)
    0000000000000988 t std::__1::__compressed_pair_elem<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep, 0, false>::__compressed_pair_elem(std::__1::__default_init_tag)
    000000000000099c t std::__1::__compressed_pair_elem<std::__1::allocator<char>, 1, true>::__compressed_pair_elem(std::__1::__default_init_tag)
    000000000000011c T std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long)
                     U std::__1::cout
    00000000000000c4 T std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)
                     U std::__1::ctype<char>::id
                     U std::__1::locale::~locale()
                     U std::__1::ios_base::__set_badbit_and_consider_rethrow()
                     U std::__1::ios_base::clear(unsigned int)
    0000000000000820 t std::__1::ios_base::width(long)
    0000000000000d28 t std::__1::ios_base::setstate(unsigned int)
    00000000000009c8 t std::__1::allocator<char>::allocator()
    00000000000006f4 t std::__1::basic_ios<char, std::__1::char_traits<char> >::setstate(unsigned int)
    000000000000084c t std::__1::nullptr_t::nullptr_t(int std::__1::nullptr_t::__nat::*)
    0000000000000880 t std::__1::nullptr_t::nullptr_t(int std::__1::nullptr_t::__nat::*)
    0000000000000a08 t char const* std::__1::__to_address<char const>(char const*)
    000000000000072c t std::__1::__get_nullptr_t()
    0000000000000974 t std::__1::__default_init_tag&& std::__1::forward<std::__1::__default_init_tag>(std::__1::remove_reference<std::__1::__default_init_tag>::type&)
    0000000000000b50 t char const* std::__1::addressof<char const>(char const&)
    0000000000000cc4 t std::__1::ctype<char> const& std::__1::use_facet<std::__1::ctype<char> >(std::__1::locale const&)
    0000000000000050 T std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*)
                     U std::terminate()
    0000000000000720 T ___clang_call_terminate
                     U ___cxa_begin_catch
                     U ___cxa_call_unexpected
                     U ___cxa_end_catch
                     U ___gxx_personality_v0
    0000000000000000 T _main
                     U _strlen
    0000000000000e08 s l_.str
    0000000000000000 t ltmp0
    0000000000000d5c s ltmp1
    0000000000000e08 s ltmp2
    0000000000000e18 s ltmp3
    



    • Partager sur Facebook
    • Partager sur Twitter
      20 août 2022 à 16:15:30

      Bonjour ! Est-ce que tu as lu le manuel : https://man7.org/linux/man-pages/man1/nm.1.html . Il décrit ce qui est affiché.
      • Partager sur Facebook
      • Partager sur Twitter
        20 août 2022 à 18:55:38

        @robun Salut ! Oui j'ai lu le manuel. Il indique à quoi correspond chacune des 3 colonnes de la sortie.

        La 1ère colonne correspond à la valeur du symbole en hexadécimal.

        La 2ème colonne correspond au type du symbole : U veut dire que le symbole est non-défini, t/T que le symbole est dans la section texte (d'ailleurs ça j'ai pas compris) et s que le symbole est dans une section pour les données non-initilialisées pour les petits objets (pas compris non plus car je vois pas ce que c'est que ces "sections").

        La 3ème colonne correspond au nom du symbole.

        Mais à part ça je ne vois pas l'utilité de cette commande qui n'a pas l'air d'apprendre quoique ce soit d'utile.

        • Partager sur Facebook
        • Partager sur Twitter

        Des gens ici qui utilisent la commande nm -C ?

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        • Editeur
        • Markdown