{"id":10791,"date":"2024-11-30T17:33:40","date_gmt":"2024-11-30T09:33:40","guid":{"rendered":"https:\/\/yanjingang.com\/blog\/?p=10791"},"modified":"2026-05-28T17:25:10","modified_gmt":"2026-05-28T09:25:10","slug":"autoware-coredump%e9%97%ae%e9%a2%98%e5%ae%9a%e4%bd%8d","status":"publish","type":"post","link":"https:\/\/yanjingang.com\/blog\/?p=10791","title":{"rendered":"Autoware\u2014coredump\u95ee\u9898\u5b9a\u4f4d"},"content":{"rendered":"<p>\u6211\u4eec\u5728docker\u5185\u8c03\u8bd5autoware.ai\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6709\u65f6\u4f1a\u9047\u5230\u67d0\u4e2a\u4e09\u65b9\u6a21\u5757\u5f02\u5e38\u9000\u51fa\uff0c\u5373\u6ca1\u6709log\u4e5f\u6ca1\u6709\u751f\u6210coredump\u6587\u4ef6\uff0c\u672c\u6587\u5c31\u8bb2\u89e3\u4e0b\u5982\u4f55\u5728\u5b9a\u4f4d\u8fd9\u7c7b\u95ee\u9898\u3002<\/p>\n<h1>\u4e00\u3001\u4f7f\u7528root\u6743\u9650\u8fdb\u5165docker\u5bb9\u5668<\/h1>\n<p>autoware.ai\u9ed8\u8ba4\u4f7f\u7528ubuntu18\u7f16\u8bd1\uff0c\u5f88\u591a\u540c\u5b66\u4f1a\u4f7f\u7528docker\uff0c\u800c\u9ed8\u8ba4\u4f7f\u7528autoware\u7528\u6237\u8fdb\u5165docker\u65f6\uff0c\u662f\u6ca1\u6cd5sudo\u6267\u884c\u547d\u4ee4\u7684\uff0c\u4f1a\u63d0\u793a\u201csudo: \/usr\/bin\/sudo must be owned by uid 0 and have the setuid bit set\u201d\uff0c\u6240\u4ee5\u8fd9\u91cc\u6211\u4eec\u9996\u5148\u4f7f\u7528root\u6743\u9650\u767b\u9646\u3002<\/p>\n<p>\u7f16\u5199open-docker\u811a\u672c\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">vim  open-docker.sh \r\n\r\n# run docker\r\ncd $HOME\/autoware.ai\/generic\/\r\n.\/run.sh --cuda on -b $HOME\/autoware.ai\/Autoware,$HOME\/autoware.ai\/Robot -i yanjingang\/autoware<\/code><\/pre>\n<p>\u7f16\u5199exec-docker\u811a\u672c\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">vim exec-docker.sh\r\n\r\n#!\/bin\/bash\r\n\r\nset -x\r\n\r\n# newgrp docker\r\n\r\nCONTAINER_ID=`docker ps|awk 'NR==2{print $1}'`\r\nCONTAINER_USER=autoware\r\n\r\nif [ $# -ge 1 ]; then\r\n    CONTAINER_USER=$1\r\nfi\r\ndocker exec --user $CONTAINER_USER -it $CONTAINER_ID \/bin\/bash<\/code><\/pre>\n<p>\u542f\u52a8\u955c\u50cf\u5bb9\u5668\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">.\/open-docker.sh<\/code><\/pre>\n<p>\u4f7f\u7528root\u767b\u5f55\u5df2\u7ecfopen\u7684\u5bb9\u5668\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">.\/exec-docker.sh root<\/code><\/pre>\n<h1><\/h1>\n<h1>\u4e8c\u3001<span id=\"coredump\">\u6253\u5f00coredump\u6587\u4ef6\u751f\u6210<\/span><\/h1>\n<h4>1.\u652f\u6301\u751f\u6210coredump\u6587\u4ef6<\/h4>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u67e5\u770b\u5f53\u524d\u8bbe\u7f6e\r\ncat \/etc\/security\/limits.conf|grep core\r\nulimit -c      # \u5982\u679c\u662funlimited,\u8bf4\u660e\u8bbe\u7f6e\u6210\u529f\r\n# \u8bbe\u7f6e\uff08\u6700\u597d\u52a0\u5230\u4e1a\u52a1\u542f\u52a8\u547d\u4ee4\u91cc\uff09\r\nulimit -c unlimited<\/code><\/pre>\n<h4>2.\u4fee\u6539coredump\u6587\u4ef6\u751f\u6210\u4f4d\u7f6e\u548c\u547d\u540d\u89c4\u5219<\/h4>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u67e5\u770b\u76ee\u524d\u4f7f\u7528\u7684\u65b9\u5f0f\r\ncat \/proc\/sys\/kernel\/core_pattern\r\n# \u4fee\u6539\u751f\u6210\u4f4d\u7f6e\u548c\u547d\u540d\u89c4\u5219\uff08\u5fc5\u987bbash -c 'echo xxx'\u65b9\u5f0f\uff0c\u4e0d\u80fd\u901a\u8fc7vi\u4fee\u6539\uff0c\u4e0d\u6307\u5b9a\u8def\u5f84\u65f6\u9ed8\u8ba4\u751f\u6210\u5230~\/.ros\/*.core\uff09\r\nbash -c 'echo \"\/coredump\/%e-%p-%t.core\" &gt; \/proc\/sys\/kernel\/core_pattern'\r\n# \u68c0\u67e5\u662f\u5426\u751f\u6548\r\ncat \/proc\/sys\/kernel\/core_pattern\r\n# \u547d\u540d\u683c\u5f0f\u5316\u53c2\u6570\u8bf4\u660e:\r\n%p - insert pid into filename \u6dfb\u52a0pid\r\n%u - insert current uid into filename \u6dfb\u52a0\u5f53\u524duid\r\n%g - insert current gid into filename \u6dfb\u52a0\u5f53\u524dgid\r\n%s - insert signal that caused the coredump into the filename \u6dfb\u52a0\u5bfc\u81f4\u4ea7\u751fcore\u7684\u4fe1\u53f7\r\n%t - insert UNIX time that the coredump occurred into filename \u6dfb\u52a0core\u6587\u4ef6\u751f\u6210\u65f6\u7684unix\u65f6\u95f4\r\n%h - insert hostname where the coredump happened into filename \u6dfb\u52a0\u4e3b\u673a\u540d\r\n%e - insert coredumping executable name into filename \u6dfb\u52a0\u547d\u4ee4\u540d\r\n# qnx\u7cfb\u7edf\u4e0b\u6ca1\u6709\/proc\/sys\/kernel\/core_pattern\u6587\u4ef6\uff0c\u9700\u8981\u7528\u547d\u4ee4\u6307\u5b9a\u4fdd\u5b58\u76ee\u5f55\r\nmkdir \/coredump\/\r\nchmod 777 \/coredump\/<\/code><\/pre>\n<h4>3.\u5b89\u88c5gdb\u5de5\u5177<\/h4>\n<pre class=\"pure-highlightjs\"><code class=\"\">apt install -y gdb<\/code><\/pre>\n<h4>4.\u4fdd\u5b58\u955c\u50cf\u4fee\u6539<\/h4>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u83b7\u53d6\u5bb9\u5668ID\r\nCONTAINER_ID=`docker ps|awk 'NR==2{print $1}'`\r\n\r\n# \u5bfc\u51fa\u5bb9\u5668\u4e3a\u955c\u50cf\r\ndocker commit -a \"yanjingang\" -m \"autoware.ai\"  $CONTAINER_ID yanjingang\/autoware:latest-melodic-base-cuda\r\n\r\n# \u68c0\u67e5\u955c\u50cftag\u72b6\u6001\r\ndocker image ls\r\n\r\n# \u955c\u50cf\u6253\u5305\u4e3atar\u5305\r\ndocker save -o autoware-latest-melodic-base-cuda.tar  yanjingang\/autoware:latest-melodic-base-cuda\r\n\r\n# push\u672c\u5730\u955c\u50cf\u5230hub\r\ndocker login\r\ndocker push yanjingang\/autoware:latest-melodic-base-cuda\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h1>\u4e09\u3001\u7f16\u8bd1ROS Debug\u5305<\/h1>\n<h4>1. CMakelist.txt\u914d\u7f6e<\/h4>\n<p>\u5728\u7f16\u8bd1ROS\u8fdb\u7a0b\u7684CMakelist.txt\u4e2d\u6dfb\u52a0\u4e0b\u9762\u547d\u4ee4\uff0c\u4f7f\u7f16\u8bd1\u4ea7\u751f\u7684\u6267\u884c\u6587\u4ef6\u5305\u542bgdb\u8c03\u8bd5\u4fe1\u606f\u3002<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">SET(CMAKE_BUILD_TYPE \"Debug\")\r\nSET(CMAKE_CXX_FLAGS_DEBUG \"$ENV{CXXFLAGS} -O0 -Wall -g -ggdb\")\r\nSET(CMAKE_CXX_FLAGS_RELEASE \"$ENV{CXXFLAGS} -O3 -Wall\")<\/code><\/pre>\n<p>CMAKE_BUILD_TYPE\u662fCMake\u4e2d\u7684\u4e00\u4e2a\u53d8\u91cf\uff0c\u53ef\u4ee5\u7684\u53d6\u503c\u662f<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">Debug\r\nRelease\r\nRelWithDebInfo\r\nMinSizeRel<\/code><\/pre>\n<p>\u5f53\u8fd9\u4e2a\u53d8\u91cf\u503c\u4e3aDebug\u65f6\uff0cCMake\u4f1a\u4f7f\u7528\u53d8\u91cfCMAKE_CXX_FLAGS_DEBUG\u3001CMAKE_C_FLAGS_DEBUG\u4e2d\u7684\u5b57\u7b26\u4e32\u4f5c\u4e3a\u7f16\u8bd1\u9009\u9879\u751f\u6210Makefile\uff0c\u76f8\u5e94\u7684\u7f16\u8bd1\u9009\u9879\u5c31\u662f\u5728\u8fd9\u91cc\u6307\u5b9a\u3002<\/p>\n<p>CMAKE_CXX_FLAGS_DEBUG\u4e2d\u7684\u7f16\u8bd1\u9009\u9879\u89e3\u91ca\uff1a<\/p>\n<ul>\n<li>-O0 \u5173\u95ed\u6240\u6709\u4ee3\u7801\u4f18\u5316\u9009\u9879<\/li>\n<li>-Wall \u5f00\u542f\u5927\u90e8\u5206\u544a\u8b66\u63d0\u793a<\/li>\n<li>-g \u5305\u542b\u8c03\u8bd5\u4fe1\u606f<\/li>\n<li>-ggdb \u5728\u53ef\u6267\u884c\u6587\u4ef6\u4e2d\u5305\u542b\u53ef\u4f9bgdb\u4f7f\u7528\u7684\u8c03\u8bd5\u4fe1\u606f<\/li>\n<\/ul>\n<p>CMAKE_CXX_FLAGS_RELEASE \u4e2d\u7684\u7f16\u8bd1\u9009\u9879\u89e3\u91ca\uff1a<\/p>\n<ul>\n<li>-O3 \u5f00\u542f\u7b2c\u4e09\u7ea7\u522b\u4f18\u5316\uff0c\u5728-O2\u57fa\u7840\u4e0a\u589e\u52a0\u4ea7\u751finline\u51fd\u6570\u3001\u4f7f\u7528\u5bc4\u5b58\u5668\u7b49\u4f18\u5316\u6280\u672f<\/li>\n<\/ul>\n<h4>2.\u7f16\u8bd1<\/h4>\n<p>\u6211\u4eec\u8fd9\u91cc\u5355\u72ec\u6539\u4e86\u4e0bPNC\u00a0 pure_pursuit\u6a21\u5757\u7684\u7684CMakelist.txt\uff0c\u7136\u540e\u7f16\u8bd1Debug\u7248\u672c<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">cd ~\/Autoware\r\nAUTOWARE_COMPILE_WITH_CUDA=1 colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=<span style=\"color: #ff0000;\">Debug<\/span> --packages-select=<span style=\"color: #ff0000;\">pure_pursuit<\/span><\/code><\/pre>\n<h1><\/h1>\n<h1>\u56db\u3001coredump+gdb\u9a8c\u8bc1<\/h1>\n<h4>1.\u7f16\u5199\u6d4b\u8bd5\u7a0b\u5e8f<\/h4>\n<pre class=\"pure-highlightjs\"><code class=\"\">cd ~\/Autoware\/src\r\ncatkin_create_pkg test_coredump\r\n\r\nTEST_DIR=~\/Autoware\/src\/test_coredump\r\nmkdir -p $TEST_DIR\/src &amp;&amp; mkdir -p $TEST_DIR\/launch\r\n\r\n\r\n# \u6d4b\u8bd5\u7a0b\u5e8f\r\nvim $TEST_DIR\/src\/test_coredump.cpp\r\n\r\n#include &lt;ros\/ros.h&gt;\r\n#include &lt;iostream&gt;\r\n\r\nint main(int argc, char **argv){\r\n    ros::init(argc, argv, \"core_dump_test\");\r\n    ros::NodeHandle n;    \r\n    int *p = NULL;\r\n    std::cout&lt;&lt;*p&lt;&lt;std::endl; \/\/\u4f7f\u7528\u7a7a\u6307\u9488\r\n\r\n    ros::AsyncSpinner spinner(1);\r\n    spinner.start();\r\n    ros::waitForShutdown();\r\n}<\/code><\/pre>\n<h4>2.\u7f16\u5199\u6d4b\u8bd5\u7f16\u8bd1\u914d\u7f6e<\/h4>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u6d4b\u8bd5\u7f16\u8bd1\u914d\u7f6e\r\nvim $TEST_DIR\/CMakeLists.txt\r\n\r\ncmake_minimum_required(VERSION 3.0.2)\r\nproject(test_coredump)\r\n\r\nSET(CMAKE_BUILD_TYPE \"Debug\")\r\nSET(CMAKE_CXX_FLAGS_DEBUG \"$ENV{CXXFLAGS} -O0 -Wall -g -ggdb\")\r\nSET(CMAKE_CXX_FLAGS_RELEASE \"$ENV{CXXFLAGS} -O3 -Wall\")\r\nfind_package(\r\n  catkin REQUIRED COMPONENTS\r\n    roscpp\r\n)\r\ncatkin_package(\r\n  INCLUDE_DIRS\r\n)\r\ninclude_directories(\r\n  include\r\n  ${catkin_INCLUDE_DIRS}\r\n)\r\n\r\nadd_executable(${PROJECT_NAME} src\/test_coredump.cpp)\r\nadd_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})\r\ntarget_link_libraries(${PROJECT_NAME}\r\n   ${catkin_LIBRARIES}\r\n)\r\ninstall(TARGETS ${PROJECT_NAME}\r\n   RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}\r\n)\r\ninstall(\r\n   DIRECTORY launch\/\r\n   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}\/launch\r\n)\r\n\r\n# \u4f9d\u8d56\u914d\u7f6e\r\nvim $TEST_DIR\/package.xml\r\n&lt;?xml version=\"1.0\"?&gt;\r\n&lt;package format=\"2\"&gt;\r\n   &lt;name&gt;test_coredump&lt;\/name&gt;\r\n   &lt;version&gt;0.0.0&lt;\/version&gt;\r\n   &lt;description&gt;The test_coredump package&lt;\/description&gt;\r\n   &lt;maintainer email=\"autoware@todo.todo\"&gt;autoware&lt;\/maintainer&gt;\r\n   &lt;license&gt;TODO&lt;\/license&gt;\r\n\r\n   &lt;depend&gt;roscpp&lt;\/depend&gt;\r\n   &lt;buildtool_depend&gt;catkin&lt;\/buildtool_depend&gt;\r\n&lt;\/package&gt;<\/code><\/pre>\n<h4>3.\u7f16\u5199launch\u6587\u4ef6<\/h4>\n<pre class=\"pure-highlightjs\"><code class=\"\">vim $TEST_DIR\/launch\/test_coredump.launch\r\n\r\n&lt;launch&gt;\r\n  &lt;node pkg=\"test_coredump\" type=\"test_coredump\" name=\"test_coredump\" output=\"log\"&gt;&lt;\/node&gt;\r\n&lt;\/launch&gt;\r\n<\/code><\/pre>\n<h4>4.\u7f16\u8bd1<\/h4>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u7f16\u8bd1\r\ncd ~\/Autoware\r\ncolcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Debug --packages-select=test_coredump\r\n\r\nfind . -type f -name test_coredump|xargs chmod +x<\/code><\/pre>\n<h4>5.\u542f\u52a8\u5e76\u68c0\u67e5coredump\u6587\u4ef6<\/h4>\n<pre class=\"pure-highlightjs\"><code class=\"\">cd ~\/Autoware\r\nsource ~\/Autoware\/install\/setup.bash\r\n\r\n# \u542f\u52a8\r\nroslaunch test_coredump test_coredump.launch\r\n    ....\r\n    [test_coredump-2] process has died [pid 67385, exit code -11\r\n\r\n# \u67e5\u770bcoredump\u6587\u4ef6\r\nll \/home\/autoware\/.ros\/test_coredump-* -rt\r\n    ~\/.ros\/test_coredump-68009-1764667443.core<\/code><\/pre>\n<h4>6.gdb\u5b9a\u4f4d\u4f4d\u7f6e<\/h4>\n<pre class=\"pure-highlightjs\"><code class=\"\"># \u786e\u5b9a\u6a21\u5757node\u4f4d\u7f6e\r\nfind . -name test_coredump -type f\r\n    .\/build\/test_coredump\/devel\/lib\/test_coredump\/test_coredump\r\n\r\n# \u4f7f\u7528gdb\u67e5\u770bcore\u5806\u6808\r\ngdb ~\/Autoware\/<span style=\"color: #ff0000;\">build<\/span>\/test_coredump\/devel\/lib\/test_coredump\/test_coredump  ~\/.ros\/test_coredump-68009-1764667443.core\r\n\r\nGNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1\r\nCopyright (C) 2018 Free Software Foundation, Inc.\r\nLicense GPLv3+: GNU GPL version 3 or later &lt;http:\/\/gnu.org\/licenses\/gpl.html&gt;\r\nThis is free software: you are free to change and redistribute it.\r\nThere is NO WARRANTY, to the extent permitted by law.  Type \"show copying\"\r\nand \"show warranty\" for details.\r\nThis GDB was configured as \"x86_64-linux-gnu\".\r\nType \"show configuration\" for configuration details.\r\nFor bug reporting instructions, please see:\r\n&lt;http:\/\/www.gnu.org\/software\/gdb\/bugs\/&gt;.\r\nFind the GDB manual and other documentation resources online at:\r\n&lt;http:\/\/www.gnu.org\/software\/gdb\/documentation\/&gt;.\r\nFor help, type \"help\".\r\nType \"apropos word\" to search for commands related to \"word\"...\r\nReading symbols from \/home\/autoware\/Autoware\/build\/test_coredump\/devel\/lib\/test_coredump\/test_coredump...done.\r\n[New LWP 68009]\r\n[New LWP 68015]\r\n[New LWP 68018]\r\n[New LWP 68017]\r\n[New LWP 68016]\r\n[Thread debugging using libthread_db enabled]\r\nUsing host libthread_db library \"\/lib\/x86_64-linux-gnu\/libthread_db.so.1\".\r\nCore was generated by `\/home\/autoware\/Autoware\/install\/test_coredump\/lib\/test_coredump\/test_coredump _'.\r\nProgram terminated with signal SIGSEGV, Segmentation fault.\r\n(gdb) bt\r\n#0  0x0000564662c02d92 in main (argc=1, argv=0x7fffe50673d8) at \/home\/autoware\/Autoware\/src\/test_coredump\/src\/test_coredump.cpp:9\r\n9\t    <span style=\"color: #ff0000;\">std::cout&lt;&lt;*p&lt;&lt;std::endl; \/\/\u4f7f\u7528\u7a7a\u6307\u9488<\/span>\r\n[Current thread is 1 (Thread 0x7fc2f2fe3d40 (LWP 68009))]\r\n(gdb) q<\/code><\/pre>\n<p>\u4e0b\u56fe\u662f\u5361\u5c14\u66fc\u6ee4\u6ce2\u8ffd\u8e2alidar\u805a\u7c7b\u969c\u788d\u7269\u65f6\uff0c\u5224\u65ad\u805a\u7c7b\u70b9\u4e91\u662f\u5426\u662f\u8f66\u8f86\u65f6\uff0c\u6709vector\u4e0b\u6807\u8d8a\u754c\uff1a<\/p>\n<p><a href=\"http:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2025\/12\/pnc-coredump.png\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-10807\" src=\"http:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2025\/12\/pnc-coredump-1024x531.png\" alt=\"\" width=\"625\" height=\"324\" srcset=\"https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2025\/12\/pnc-coredump-1024x531.png 1024w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2025\/12\/pnc-coredump-300x155.png 300w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2025\/12\/pnc-coredump-768x398.png 768w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2025\/12\/pnc-coredump-1536x796.png 1536w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2025\/12\/pnc-coredump-624x323.png 624w, https:\/\/yanjingang.com\/blog\/wp-content\/uploads\/2025\/12\/pnc-coredump.png 1845w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p>\u589e\u52a0\u9632\u62a4\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\">vim Autoware\/src\/autoware\/core_perception\/lidar_kf_contour_track\/nodes\/lidar_kf_contour_track\/lidar_kf_contour_track_core.cpp\r\n\r\n...\r\nbool ContourTracker::IsCar(const PlannerHNS::DetectedObject&amp; obj, const PlannerHNS::WayPoint&amp; currState, PlannerHNS::RoadNetwork&amp; map)\r\n{\r\n\r\n  if(bMap)\r\n  {\r\n    bool bOnLane = false;\r\n    \/\/ std::cout &lt;&lt; \"Debug Obj: \" &lt;&lt; obj.id &lt;&lt; \", Closest Lane: \" &lt;&lt; m_ClosestLanesList.size() &lt;&lt; std::endl;\r\n\r\n    for(unsigned int i =0 ; i &lt; m_ClosestLanesList.size(); i++)\r\n    {\r\n      PlannerHNS::RelativeInfo info;\r\n      PlannerHNS::PlanningHelpers::GetRelativeInfoLimited(m_ClosestLanesList.at(i)-&gt;points, obj.center, info);\r\n      \/\/ std::cout &lt;&lt; \" info.iFront: \" &lt;&lt; info.iFront &lt;&lt; \" points.size: \" &lt;&lt; m_ClosestLanesList.at(i)-&gt;points.size() &lt;&lt; std::endl;\r\n      <span style=\"color: #ff0000;\">\/\/ yan 26.12.2 GetRelativeInfoLimited\u51fd\u6570\u5728points.size()=2\u65f6\uff0c\u505a\u4e86\u4e2a\u4e34\u65f6\u63d2\u503c\uff0c\u5bfc\u81f4\u5076\u53d1info.iFront=2\u4f1a\u8d85\u8fc7points.size()\u7684\u4e0b\u6807\uff0c\u5176\u5b9e2\u4e2apoints\u4e0d\u53ef\u80fd\u662fCar\uff0c\u6240\u4ee5\u8fd9\u91cc\u76f4\u63a5\u8df3\u8fc7\u5373\u53ef<\/span>\r\n<span style=\"color: #ff0000;\">      if (info.iFront &gt;= m_ClosestLanesList.at(i)-&gt;points.size()) \/\/ \u589e\u52a0\u62e6\u622a\r\n        continue;<\/span>\r\n      PlannerHNS::WayPoint wp = m_ClosestLanesList.at(i)-&gt;<span style=\"color: #ff0000;\">points.at(info.iFront)<\/span>;\r\n\r\n      double direct_d = hypot(wp.pos.y - obj.center.pos.y, wp.pos.x - obj.center.pos.x);\r\n\r\n    \/\/  std::cout &lt;&lt; \"- Distance To Car: \" &lt;&lt; obj.distance_to_center &lt;&lt; \", PerpD: \" &lt;&lt; info.perp_distance &lt;&lt; \", DirectD: \" &lt;&lt; direct_d &lt;&lt; \", bAfter: \" &lt;&lt; info.bAfter &lt;&lt; \", bBefore: \" &lt;&lt; info.bBefore &lt;&lt; std::endl;\r\n   ...\r\n}<\/code><\/pre>\n<p>\u4ee5\u4e0a\u4e3a\u4e00\u4e2a\u793a\u4f8b\uff0c\u5927\u5bb6\u6839\u636e\u81ea\u5df1\u60c5\u51b5Debug\u5bf9\u5e94\u6a21\u5757\u5373\u53ef\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>yan 2025.11.30<\/p>\n<p>&nbsp;<\/p>\n<p>\u53c2\u8003\uff1a<\/p>\n<p><a href=\"https:\/\/zhuanlan.zhihu.com\/p\/459530578\" target=\"_blank\" rel=\"noopener\">\u4e09\u6b65\u641e\u5b9aROS\u8fdb\u7a0b\u5d29\u6e83-Core Dump<\/a><\/p>\n<p><a href=\"https:\/\/blog.csdn.net\/weixin_39278265\/article\/details\/102463382\" target=\"_blank\" rel=\"noopener\">Docker\u5bb9\u5668\u6743\u9650\u62a5\u9519 [\u65e0\u6cd5\u4f7f\u7528sudo]\uff1asudo: \/usr\/bin\/sudo must be owned by uid 0 and have the setuid bit set<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6211\u4eec\u5728docker\u5185\u8c03\u8bd5autoware.ai\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6709\u65f6\u4f1a\u9047\u5230\u67d0\u4e2a\u4e09\u65b9\u6a21\u5757\u5f02\u5e38\u9000\u51fa\uff0c\u5373\u6ca1\u6709log\u4e5f\u6ca1\u6709\u751f\u6210 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1368,1027,708,1005],"tags":[1369,1426,1464,707,1249,968],"_links":{"self":[{"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/10791"}],"collection":[{"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10791"}],"version-history":[{"count":4,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/10791\/revisions"}],"predecessor-version":[{"id":11126,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/10791\/revisions\/11126"}],"wp:attachment":[{"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10791"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yanjingang.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}