{"id":3228,"date":"2019-09-05T11:08:56","date_gmt":"2019-09-05T11:08:56","guid":{"rendered":"https:\/\/tridenstechnology.com\/?p=3228"},"modified":"2022-03-01T15:10:30","modified_gmt":"2022-03-01T15:10:30","slug":"oracle-brm-politique-opcode-code-personnalise-debogage-via-gdb","status":"publish","type":"post","link":"https:\/\/tridenstechnology.com\/fr\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/","title":{"rendered":"D\u00e9bogage du code personnalis\u00e9 Oracle BRM Policy Opcode via GDB"},"content":{"rendered":"<p>Si nous voulons produire un produit de haute qualit\u00e9 de notre <a href=\"https:\/\/tridenstechnology.com\/oracle-brm\/\">Oracle BRM<\/a> Pour d\u00e9velopper un logiciel, nous devons r\u00e9pondre \u00e0 certaines exigences concernant notre processus de d\u00e9veloppement. Il est particuli\u00e8rement important d'int\u00e9grer de bonnes techniques de test et de d\u00e9bogage dans notre processus de d\u00e9veloppement.<br>Le test est un processus de recherche de bogues ou d'erreurs dans un produit logiciel qui est effectu\u00e9 manuellement par un testeur ou qui peut \u00eatre automatis\u00e9.<br><a href=\"https:\/\/en.wikipedia.org\/wiki\/Debugging\">D\u00e9bogage<\/a> est le processus qui consiste \u00e0 trouver et \u00e0 r\u00e9soudre les d\u00e9fauts ou les probl\u00e8mes au sein d'un programme informatique qui emp\u00eachent le bon fonctionnement d'un logiciel ou d'un syst\u00e8me. Il s'agit essentiellement d'un processus de correction des bogues d\u00e9couverts lors de la phase de test. Le programmeur ou le d\u00e9veloppeur est responsable du d\u00e9bogage, qui ne peut \u00eatre automatis\u00e9.<\/p>\n\n\n\n<div class=\"wp-block-yoast-seo-table-of-contents yoast-table-of-contents\"><h2>Table des mati\u00e8res<\/h2><ul><li><a href=\"#h-debugging-oracle-brm-policy-opcodes-custom-code\" data-level=\"2\">D\u00e9bogage des opcodes de la politique Oracle BRM code personnalis\u00e9<\/a><\/li><li><a href=\"#h-debugging-in-practice\" data-level=\"2\">Le d\u00e9bogage en pratique<\/a><\/li><\/ul><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-debugging-oracle-brm-policy-opcodes-custom-code\">D\u00e9bogage des opcodes de la politique Oracle BRM code personnalis\u00e9<\/h2>\n\n\n\n<p>Lors de la personnalisation des opcodes de politique dans <a href=\"https:\/\/tridenstechnology.com\/oracle-brm\/\">Oracle BRM<\/a> Il est souvent n\u00e9cessaire de d\u00e9boguer un code pour trouver des bogues potentiels ou analyser le comportement du code. Une analyse de base peut \u00eatre effectu\u00e9e en enregistrant des messages de d\u00e9bogage et en analysant les journaux, mais une m\u00e9thode beaucoup plus avanc\u00e9e et puissante consiste \u00e0 utiliser un outil distinct, le d\u00e9bogueur. Dans cet article, nous verrons comment utiliser le d\u00e9bogueur open-source GDB pour d\u00e9boguer un processus Oracle BRM cm qui ex\u00e9cute \u00e9galement du code personnalis\u00e9 (voir l'image ci-dessous).<\/p>\n\n\n\n<div class=\"wp-block-image dt-pswp-item\"><figure class=\"aligncenter\"><a class=\"dt-pswp-item\" href=\"https:\/\/tridenstechnology.com\/wp-content\/uploads\/2019\/09\/Debugging-Oracle-BRM-CM-GDB.png\"><img fetchpriority=\"high\" decoding=\"async\" width=\"593\" height=\"266\" src=\"https:\/\/tridenstechnology.com\/wp-content\/uploads\/2019\/09\/Debugging-Oracle-BRM-CM-GDB.png\" alt=\"D\u00e9bogage du Oracle BRM CM avec GDB\" class=\"wp-image-3230\" srcset=\"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/09\/Debugging-Oracle-BRM-CM-GDB.png 593w, https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/09\/Debugging-Oracle-BRM-CM-GDB-300x135.png 300w\" sizes=\"(max-width: 593px) 100vw, 593px\" \/><\/a><figcaption>Aper\u00e7u sch\u00e9matique du d\u00e9bogage du CM Oracle BRM \u00e0 l'aide de GDB<\/figcaption><\/figure><\/div>\n\n\n\n<p><a href=\"https:\/\/www.gnu.org\/software\/gdb\/\">GDB<\/a> est un d\u00e9bogueur open-source qui fournit de nombreux outils avanc\u00e9s et puissants pour analyser et d\u00e9boguer notre code. Parmi les fonctionnalit\u00e9s de base de GDB, citons les points d'arr\u00eat (conditionnels\/inconditionnels), les montres, les traces r\u00e9trospectives et l'ex\u00e9cution incr\u00e9mentielle du code. Bien entendu, vous pouvez \u00e9galement afficher et modifier les valeurs des variables et appeler diverses fonctions. Voyons maintenant comment nous utilisons GDB avec cm process dans la pratique.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-debugging-in-practice\">Le d\u00e9bogage en pratique<\/h2>\n\n\n\n<p>Tout d'abord, nous devons obtenir le PID de notre processus CM :<\/p>\n\n\n\n<p><em>ps x<\/em><\/p>\n\n\n\n<p>Trouvez le PID du processus CM et utilisez-le pour vous connecter \u00e0 ce processus avec GDB :<\/p>\n\n\n\n<p>gdb cm<\/p>\n\n\n\n<p>L'interpr\u00e9teur de commandes GDB s'ouvre alors et permet d'ex\u00e9cuter les diff\u00e9rentes commandes prises en charge par GDB. Chaque nouvelle connexion \u00e9tablie avec le CM entra\u00eene la cr\u00e9ation d'un nouveau processus CM enfant \u00e0 partir du CM parent. Nous voulons que GDB suive \u00e9galement ces processus enfants. Ex\u00e9cutez la commande suivante dans l'interpr\u00e9teur de commandes GDB :<\/p>\n\n\n\n<p>(gdb) set follow-fork-mode child<\/p>\n\n\n\n<p>En fonction de vos besoins, vous pouvez \u00e9galement explorer les commandes set detach-on-fork et attach. Pla\u00e7ons maintenant un point d'arr\u00eat sur l'impl\u00e9mentation d'un opcode de politique, comme dans l'exemple suivant :<\/p>\n\n\n\n<p>(gdb) break fm_act_pol_post_reauthorize.c:192<\/p>\n\n\n\n<p>Lorsque nous d\u00e9clenchons l'ex\u00e9cution d'un opcode de politique, celle-ci sera interrompue par un point d'arr\u00eat (ou m\u00eame avant cela, elle nous informera qu'un nouvel enfant a \u00e9t\u00e9 cr\u00e9\u00e9). Nous pouvons alors suivre le flux de code \u00e9tape par \u00e9tape en utilisant les commandes next (abbr. n) ou step. Si nous sommes int\u00e9ress\u00e9s par la valeur d'une variable, nous pouvons l'imprimer \u00e0 l'aide de la commande next (abbr. n) :<\/p>\n\n\n\n<p>print<\/p>\n\n\n\n<div class=\"wp-block-image dt-pswp-item\"><figure class=\"aligncenter\"><a class=\"dt-pswp-item\" href=\"https:\/\/tridenstechnology.com\/wp-content\/uploads\/2019\/09\/Oracle-BRM-CM-process-debugging-example.png\"><img decoding=\"async\" width=\"840\" height=\"413\" src=\"https:\/\/tridenstechnology.com\/wp-content\/uploads\/2019\/09\/Oracle-BRM-CM-process-debugging-example.png\" alt=\"Exemple de d\u00e9bogage du processus Oracle BRM CM\" class=\"wp-image-3239\" srcset=\"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/09\/Oracle-BRM-CM-process-debugging-example.png 840w, https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/09\/Oracle-BRM-CM-process-debugging-example-300x148.png 300w, https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/09\/Oracle-BRM-CM-process-debugging-example-768x378.png 768w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/a><figcaption>Exemple d'utilisation de GDB pour d\u00e9boguer le processus Oracle BRM CM<\/figcaption><\/figure><\/div>\n\n\n\n<p>De nombreuses fonctionnalit\u00e9s plus avanc\u00e9es et plus puissantes sont \u00e9galement \u00e0 notre disposition et sont d\u00e9crites en d\u00e9tail dans la documentation de GDB et dans l'aide int\u00e9gr\u00e9e. Nous vous invitons \u00e0 les rechercher pour voir comment elles peuvent vous aider.<\/p>","protected":false},"excerpt":{"rendered":"<p>If we want to produce a high-quality of our Oracle BRM software, we must meet some requirements regarding our development process. It is especially important to incorporate good testing and debugging techniques in our development process.Testing is a process of finding bugs or errors in a software product that is done manually by a tester&hellip;<\/p>","protected":false},"author":1,"featured_media":3165,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[],"class_list":["post-3228","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle-billing","category-38","description-off"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.4 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Oracle BRM Policy Opcode Custom Code Debugging via GDB<\/title>\n<meta name=\"description\" content=\"An article about debugging Oracle Billing and Revenue Management (Oracle BRM) policy opcodes custom code using external debugger GDB.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tridenstechnology.com\/fr\/oracle-brm-politique-opcode-code-personnalise-debogage-via-gdb\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle BRM Policy Opcode Custom Code Debugging via GDB\" \/>\n<meta property=\"og:description\" content=\"An article about debugging Oracle Billing and Revenue Management (Oracle BRM) policy opcodes custom code using external debugger GDB.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tridenstechnology.com\/fr\/oracle-brm-politique-opcode-code-personnalise-debogage-via-gdb\/\" \/>\n<meta property=\"og:site_name\" content=\"Tridens\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/tridenstechnology\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-05T11:08:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-01T15:10:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/08\/Oracle-BRM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1734\" \/>\n\t<meta property=\"og:image:height\" content=\"1156\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ale\u0161\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@TridensTech\" \/>\n<meta name=\"twitter:site\" content=\"@TridensTech\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ale\u0161\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"D\u00e9bogage du code personnalis\u00e9 Oracle BRM Policy Opcode via GDB","description":"Un article sur le d\u00e9bogage du code personnalis\u00e9 des policy opcodes d'Oracle Billing and Revenue Management (Oracle BRM) \u00e0 l'aide du d\u00e9bogueur externe GDB.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/tridenstechnology.com\/fr\/oracle-brm-politique-opcode-code-personnalise-debogage-via-gdb\/","og_locale":"fr_FR","og_type":"article","og_title":"Oracle BRM Policy Opcode Custom Code Debugging via GDB","og_description":"An article about debugging Oracle Billing and Revenue Management (Oracle BRM) policy opcodes custom code using external debugger GDB.","og_url":"https:\/\/tridenstechnology.com\/fr\/oracle-brm-politique-opcode-code-personnalise-debogage-via-gdb\/","og_site_name":"Tridens","article_publisher":"https:\/\/www.facebook.com\/tridenstechnology","article_published_time":"2019-09-05T11:08:56+00:00","article_modified_time":"2022-03-01T15:10:30+00:00","og_image":[{"width":1734,"height":1156,"url":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/08\/Oracle-BRM.png","type":"image\/png"}],"author":"Ale\u0161","twitter_card":"summary_large_image","twitter_creator":"@TridensTech","twitter_site":"@TridensTech","twitter_misc":{"\u00c9crit par":"Ale\u0161","Dur\u00e9e de lecture estim\u00e9e":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#article","isPartOf":{"@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/"},"author":{"name":"Ale\u0161","@id":"https:\/\/tridenstechnology.com\/#\/schema\/person\/ccd247e07a5e0f856ec13af63d611358"},"headline":"Oracle BRM Policy Opcode Custom Code Debugging via GDB","datePublished":"2019-09-05T11:08:56+00:00","dateModified":"2022-03-01T15:10:30+00:00","mainEntityOfPage":{"@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/"},"wordCount":515,"commentCount":0,"publisher":{"@id":"https:\/\/tridenstechnology.com\/#organization"},"image":{"@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#primaryimage"},"thumbnailUrl":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/08\/Oracle-BRM.png","articleSection":["Oracle Billing"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#respond"]}],"accessibilityFeature":["tableOfContents"]},{"@type":"WebPage","@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/","url":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/","name":"D\u00e9bogage du code personnalis\u00e9 Oracle BRM Policy Opcode via GDB","isPartOf":{"@id":"https:\/\/tridenstechnology.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#primaryimage"},"image":{"@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#primaryimage"},"thumbnailUrl":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/08\/Oracle-BRM.png","datePublished":"2019-09-05T11:08:56+00:00","dateModified":"2022-03-01T15:10:30+00:00","description":"Un article sur le d\u00e9bogage du code personnalis\u00e9 des policy opcodes d'Oracle Billing and Revenue Management (Oracle BRM) \u00e0 l'aide du d\u00e9bogueur externe GDB.","breadcrumb":{"@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#primaryimage","url":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/08\/Oracle-BRM.png","contentUrl":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/08\/Oracle-BRM.png","width":1734,"height":1156,"caption":"Oracle BRM - Billing and Revenue Management"},{"@type":"BreadcrumbList","@id":"https:\/\/tridenstechnology.com\/oracle-brm-policy-opcode-custom-code-debugging-via-gdb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/tridenstechnology.com\/"},{"@type":"ListItem","position":2,"name":"Oracle BRM Policy Opcode Custom Code Debugging via GDB"}]},{"@type":"WebSite","@id":"https:\/\/tridenstechnology.com\/#website","url":"https:\/\/tridenstechnology.com\/","name":"Tridens","description":"Mon\u00e9tisation, facturation et recharge des v\u00e9hicules \u00e9lectriques","publisher":{"@id":"https:\/\/tridenstechnology.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tridenstechnology.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/tridenstechnology.com\/#organization","name":"Tridens","url":"https:\/\/tridenstechnology.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/tridenstechnology.com\/#\/schema\/logo\/image\/","url":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/02\/tridens_logo_invert.png","contentUrl":"https:\/\/d2xqcz296oofyv.cloudfront.net\/wp-content\/uploads\/2019\/02\/tridens_logo_invert.png","width":600,"height":191,"caption":"Tridens"},"image":{"@id":"https:\/\/tridenstechnology.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/tridenstechnology","https:\/\/x.com\/TridensTech","https:\/\/www.instagram.com\/tridenstechnology\/","https:\/\/www.linkedin.com\/company\/tridens","https:\/\/www.youtube.com\/user\/TridensIT"]},{"@type":"Person","@id":"https:\/\/tridenstechnology.com\/#\/schema\/person\/ccd247e07a5e0f856ec13af63d611358","name":"Ale\u0161","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/0df040b8c52446051022ab32cd2ac1dc64d3c7eed18d5bd5ab9f2992b8935fc8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0df040b8c52446051022ab32cd2ac1dc64d3c7eed18d5bd5ab9f2992b8935fc8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0df040b8c52446051022ab32cd2ac1dc64d3c7eed18d5bd5ab9f2992b8935fc8?s=96&d=mm&r=g","caption":"Ale\u0161"},"description":"Ales Pristovnik est le PDG de Tridens Technology, une entreprise slov\u00e8ne sp\u00e9cialis\u00e9e dans le d\u00e9veloppement de solutions logicielles pour l'industrie automobile. Il a une longue exp\u00e9rience dans le secteur des technologies de l'information, ayant travaill\u00e9 pour plusieurs grandes entreprises dans le pass\u00e9. Passionn\u00e9 par la technologie et l'innovation, il se concentre actuellement sur le d\u00e9veloppement de solutions qui am\u00e9lioreront la s\u00e9curit\u00e9 et l'efficacit\u00e9 de l'industrie automobile. Il poss\u00e8de une solide exp\u00e9rience en mati\u00e8re de leadership et de gestion et s'est engag\u00e9 \u00e0 faire progresser son entreprise dans le secteur technologique en constante \u00e9volution.","url":"https:\/\/tridenstechnology.com\/fr\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/tridenstechnology.com\/fr\/wp-json\/wp\/v2\/posts\/3228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tridenstechnology.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tridenstechnology.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tridenstechnology.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tridenstechnology.com\/fr\/wp-json\/wp\/v2\/comments?post=3228"}],"version-history":[{"count":0,"href":"https:\/\/tridenstechnology.com\/fr\/wp-json\/wp\/v2\/posts\/3228\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tridenstechnology.com\/fr\/wp-json\/wp\/v2\/media\/3165"}],"wp:attachment":[{"href":"https:\/\/tridenstechnology.com\/fr\/wp-json\/wp\/v2\/media?parent=3228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tridenstechnology.com\/fr\/wp-json\/wp\/v2\/categories?post=3228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tridenstechnology.com\/fr\/wp-json\/wp\/v2\/tags?post=3228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}