26 e 27 de Agosto, 2014
Transamérica Expo Center, São Paulo/SP
C++ e Linux
Embarcado:
União perfeita
Vinicius Zein, Bruno ...
Fundação CERTI - Direitos Reservados
Quem somos
• Vinicius Zein
• Coordenador da área de Sistemas
Embarcados, CCD, Fundaçã...
Fundação CERTI - Direitos Reservados
Quem somos
• Instituição de Pesquisa, Tecnologia e Inovação
• Criada em 1984 com a mi...
Fundação CERTI - Direitos Reservados
Agenda
1. Linux Embarcado
2. C++
3. Ferramentas para
desenvolvimento e debugging
4. F...
Fundação CERTI - Direitos Reservados
1 - Linux Embarcado
Fundação CERTI - Direitos Reservados
http://events.linuxfoundation.org/sites/events/files/slides/csimmonds-embedded-linux-...
Fundação CERTI - Direitos Reservados
Sistemas embarcados hoje
• Centrais telefônicas
• Telefones IP e smartphones
• Televi...
Fundação CERTI - Direitos Reservados
Sistemas embarcados hoje
• Centrais telefônicas
• Telefones IP e smartph
• Televisore...
Fundação CERTI - Direitos Reservados
Set-top box ISDB-Tb
Fundação CERTI - Direitos Reservados
2 – “cee plus plus"
Fundação CERTI - Direitos Reservados
C++
• Multi-paradigma
• Orientada a objetos
• Templates, inline functions
• Metaprogr...
Fundação CERTI - Direitos Reservados
C++
• STL, Boost, ACE
• Linguagem em constante evolução
– C++85 style "C with Classes...
Fundação CERTI - Direitos Reservados
C++?
• Don’t lower your level of abstraction
without good reason
• Low-level implies
...
Fundação CERTI - Direitos Reservados
Linux Embarcado
+
C++
=
União Perfeita
Fundação CERTI - Direitos Reservados
2 - Ferramentas para
desenvolvimento e debugging
Fundação CERTI - Direitos Reservados
Build systems
• Buildroot
“Making Embedded Linux Easy
Buildroot is a simple, efficien...
Fundação CERTI - Direitos Reservados
Build systems
• Yocto Project
“It's not an embedded Linux distribution
– it creates a...
Fundação CERTI - Direitos Reservados
Build systems
• Autoconf
• Rake
• Boost.Build
• Qmake
• Scons
• CMake
Fundação CERTI - Direitos Reservados
IDEs
* Ferramenta para navegação e
edição de código
• Vim
• Emacs
• Sublime Text 2
• ...
Fundação CERTI - Direitos Reservados
Debugging
Fundação CERTI - Direitos Reservados
Debugging
If debugging is the process of removing
bugs, then programming must be the
...
Fundação CERTI - Direitos Reservados
Debugging
• Logs
• Command Line Interface (CLI)
• gdb (post morten)
• gdb + gdbserver...
Fundação CERTI - Direitos Reservados
Debugging - GDB
• Após o crash
> gdb <program> -c <core_file>
• bt full -> backtrace
...
Fundação CERTI - Direitos Reservados
Debugging - GDB
Fundação CERTI - Direitos Reservados
Debugging - GDB
Fundação CERTI - Direitos Reservados
Debugging - GDB
Fundação CERTI - Direitos Reservados
Debugging - Breakpad
Fonte: https://code.google.com/p/google-breakpad/wiki/GettingSta...
Fundação CERTI - Direitos Reservados
Debugging - Breakpad
Fonte: https://code.google.com/p/google-breakpad/wiki/GettingSta...
Fundação CERTI - Direitos Reservados
Integração contínua
Fundação CERTI - Direitos Reservados
Outras ferramentas
• Análise estática – coverity,
cppcheck
• Cobertura – cccc
• Valgr...
Fundação CERTI - Direitos Reservados
Integração contínua
Fundação CERTI - Direitos Reservados
Cobertura de Codigo
Fundação CERTI - Direitos Reservados
Cobertura de Codigo
Fundação CERTI - Direitos Reservados
3 - Frameworks de mock e
testes para C++
Fundação CERTI - Direitos Reservados
Testes unitários – gtest
• Boa documentação
• Multiplataforma
– Linux, Windows, Mac O...
Fundação CERTI - Direitos Reservados
Testes unitários – gtest
Fundação CERTI - Direitos Reservados
Testes unitários – gtest
Fundação CERTI - Direitos Reservados
Testes unitários – gtest
Fundação CERTI - Direitos Reservados
Testes unitários – gtest
Fundação CERTI - Direitos Reservados
Testes unitários – gtest
Fundação CERTI - Direitos Reservados
gmock
• Mocking Framework do Google
para testes em C++
• Simulando comportamentos.
• ...
Fundação CERTI - Direitos Reservados
gmock
Fundação CERTI - Direitos Reservados
gmock
Fundação CERTI - Direitos Reservados
gmock
Fundação CERTI - Direitos Reservados
gmock
Fundação CERTI - Direitos Reservados
gmock
Fundação CERTI - Direitos Reservados
gmock
Fundação CERTI - Direitos Reservados
Google benchmark
• https://github.com/google/benchm
ark
• Suporte a benchmark de funç...
Fundação CERTI - Direitos Reservados
Fundação CERTI - Direitos Reservados
RAII
• Resource Acquisition Is Initialization
Fundação CERTI - Direitos Reservados
4 - Test driven development
Fundação CERTI - Direitos Reservados
TDD - Test driven development
http://www.pathfindersolns.com/
Fundação CERTI - Direitos Reservados
5 – Conclusões
Fundação CERTI - Direitos Reservados
Conclusões
• Use ponteiro inteligentes
– std::shared_ptr, std::scoped_ptr,
std::uniqu...
Fundação CERTI - Direitos Reservados
Perguntas?
Fundação CERTI - Direitos Reservados
Vinicius Zein
vtz@certi.org.br
Bruno Herrera
bmh@certi.org.br
Próximos SlideShares
Carregando em…5
×

c++-esc-brazil-presentation_v1.0

161 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
161
No SlideShare
0
A partir de incorporações
0
Número de incorporações
19
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

c++-esc-brazil-presentation_v1.0

  1. 1. 26 e 27 de Agosto, 2014 Transamérica Expo Center, São Paulo/SP C++ e Linux Embarcado: União perfeita Vinicius Zein, Bruno Herrera – Fundação CERTI
  2. 2. Fundação CERTI - Direitos Reservados Quem somos • Vinicius Zein • Coordenador da área de Sistemas Embarcados, CCD, Fundação CERTI • Bruno Herrera • Gerente de Tecnologia do Centro de Convergência Digital, Fundação CERTI
  3. 3. Fundação CERTI - Direitos Reservados Quem somos • Instituição de Pesquisa, Tecnologia e Inovação • Criada em 1984 com a missão de desenvolver soluções tecnológicas para produtos e processos • Possui cerca de 500 colaboradores no grupo • Privada, que reinveste o resultado em P&D • Credenciada no MCTI e SUFRAMA, estando apta a captar projetos de Lei de Informática, Lei do Bem e Cooperação Internacional • Mais de 500 empresas clientes no Brasil e exterior • Crescimento de mais de 20% ao ano nos últimos 5 anos • Reconhecimento e conquista de diversos prêmios, como o Prêmio FINEP Nacional
  4. 4. Fundação CERTI - Direitos Reservados Agenda 1. Linux Embarcado 2. C++ 3. Ferramentas para desenvolvimento e debugging 4. Frameworks de mock e testes 5. Test driven development 6. Conclusões
  5. 5. Fundação CERTI - Direitos Reservados 1 - Linux Embarcado
  6. 6. Fundação CERTI - Direitos Reservados http://events.linuxfoundation.org/sites/events/files/slides/csimmonds-embedded-linux-timeline-2013.pdf
  7. 7. Fundação CERTI - Direitos Reservados Sistemas embarcados hoje • Centrais telefônicas • Telefones IP e smartphones • Televisores • Set-top boxes • Impressoras • Sistemas de injeção eletrônica • Cameras • Android
  8. 8. Fundação CERTI - Direitos Reservados Sistemas embarcados hoje • Centrais telefônicas • Telefones IP e smartph • Televisores • Set-top boxes • Impressoras • Sistemas de injeção eletrônica • Cameras • Android
  9. 9. Fundação CERTI - Direitos Reservados Set-top box ISDB-Tb
  10. 10. Fundação CERTI - Direitos Reservados 2 – “cee plus plus"
  11. 11. Fundação CERTI - Direitos Reservados C++ • Multi-paradigma • Orientada a objetos • Templates, inline functions • Metaprogramação • Performática e poderosa • Ferramentas disponíveis • Compatibilidade com C just in case ;)
  12. 12. Fundação CERTI - Direitos Reservados C++ • STL, Boost, ACE • Linguagem em constante evolução – C++85 style "C with Classes” – C++98 – C++03 – C++11 – C++14 – C++18?!?!?
  13. 13. Fundação CERTI - Direitos Reservados C++? • Don’t lower your level of abstraction without good reason • Low-level implies – More code – More bugs – Higher maintenance costs http://ecn.channel9.msdn.com/events/GoingNative12/GN12Cpp11Style.pdf
  14. 14. Fundação CERTI - Direitos Reservados Linux Embarcado + C++ = União Perfeita
  15. 15. Fundação CERTI - Direitos Reservados 2 - Ferramentas para desenvolvimento e debugging
  16. 16. Fundação CERTI - Direitos Reservados Build systems • Buildroot “Making Embedded Linux Easy Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross- compilation.”
  17. 17. Fundação CERTI - Direitos Reservados Build systems • Yocto Project “It's not an embedded Linux distribution – it creates a custom one for you”
  18. 18. Fundação CERTI - Direitos Reservados Build systems • Autoconf • Rake • Boost.Build • Qmake • Scons • CMake
  19. 19. Fundação CERTI - Direitos Reservados IDEs * Ferramenta para navegação e edição de código • Vim • Emacs • Sublime Text 2 • Eclipse CDT • Netbeans • SlickEdit • QtCreator • JetBrains AppCode
  20. 20. Fundação CERTI - Direitos Reservados Debugging
  21. 21. Fundação CERTI - Direitos Reservados Debugging If debugging is the process of removing bugs, then programming must be the process of putting them in. ~Edsger Dijkstra
  22. 22. Fundação CERTI - Direitos Reservados Debugging • Logs • Command Line Interface (CLI) • gdb (post morten) • gdb + gdbserver • ddd • Google BreakPad ** Para cada problema novo encontrado, um (ou mais) testes unitários. **
  23. 23. Fundação CERTI - Direitos Reservados Debugging - GDB • Após o crash > gdb <program> -c <core_file> • bt full -> backtrace • print <variable> • frame <frame_id> • thread <thread_id>
  24. 24. Fundação CERTI - Direitos Reservados Debugging - GDB
  25. 25. Fundação CERTI - Direitos Reservados Debugging - GDB
  26. 26. Fundação CERTI - Direitos Reservados Debugging - GDB
  27. 27. Fundação CERTI - Direitos Reservados Debugging - Breakpad Fonte: https://code.google.com/p/google-breakpad/wiki/GettingStartedWithBreakpad
  28. 28. Fundação CERTI - Direitos Reservados Debugging - Breakpad Fonte: https://code.google.com/p/google-breakpad/wiki/GettingStartedWithBreakpad
  29. 29. Fundação CERTI - Direitos Reservados Integração contínua
  30. 30. Fundação CERTI - Direitos Reservados Outras ferramentas • Análise estática – coverity, cppcheck • Cobertura – cccc • Valgrind, tcmalloc
  31. 31. Fundação CERTI - Direitos Reservados Integração contínua
  32. 32. Fundação CERTI - Direitos Reservados Cobertura de Codigo
  33. 33. Fundação CERTI - Direitos Reservados Cobertura de Codigo
  34. 34. Fundação CERTI - Direitos Reservados 3 - Frameworks de mock e testes para C++
  35. 35. Fundação CERTI - Direitos Reservados Testes unitários – gtest • Boa documentação • Multiplataforma – Linux, Windows, Mac OS X • Configuração rápida e fácil • 1 execução -> múltiplas falhas
  36. 36. Fundação CERTI - Direitos Reservados Testes unitários – gtest
  37. 37. Fundação CERTI - Direitos Reservados Testes unitários – gtest
  38. 38. Fundação CERTI - Direitos Reservados Testes unitários – gtest
  39. 39. Fundação CERTI - Direitos Reservados Testes unitários – gtest
  40. 40. Fundação CERTI - Direitos Reservados Testes unitários – gtest
  41. 41. Fundação CERTI - Direitos Reservados gmock • Mocking Framework do Google para testes em C++ • Simulando comportamentos. • Criação de emuladores – Necessidade do target real
  42. 42. Fundação CERTI - Direitos Reservados gmock
  43. 43. Fundação CERTI - Direitos Reservados gmock
  44. 44. Fundação CERTI - Direitos Reservados gmock
  45. 45. Fundação CERTI - Direitos Reservados gmock
  46. 46. Fundação CERTI - Direitos Reservados gmock
  47. 47. Fundação CERTI - Direitos Reservados gmock
  48. 48. Fundação CERTI - Direitos Reservados Google benchmark • https://github.com/google/benchm ark • Suporte a benchmark de funções
  49. 49. Fundação CERTI - Direitos Reservados
  50. 50. Fundação CERTI - Direitos Reservados RAII • Resource Acquisition Is Initialization
  51. 51. Fundação CERTI - Direitos Reservados 4 - Test driven development
  52. 52. Fundação CERTI - Direitos Reservados TDD - Test driven development http://www.pathfindersolns.com/
  53. 53. Fundação CERTI - Direitos Reservados 5 – Conclusões
  54. 54. Fundação CERTI - Direitos Reservados Conclusões • Use ponteiro inteligentes – std::shared_ptr, std::scoped_ptr, std::unique_ptr • RAII • Mantenha padrões de Codificação – http://www.chromium.org/developers/coding-style – http://google- styleguide.googlecode.com/svn/trunk/cppguide.xml – http://clang.llvm.org/docs/ClangFormat.html • Teste antes codifique depois (TDD) • Prefira algoritmos (STL/Boost)
  55. 55. Fundação CERTI - Direitos Reservados Perguntas?
  56. 56. Fundação CERTI - Direitos Reservados Vinicius Zein vtz@certi.org.br Bruno Herrera bmh@certi.org.br

×